2016-09-26 8 views
2

フレックスボックスを使用してフォームを作成しました。これはFirefox、Edge、IE11で美しく機能します。Chromeのalign-items:選択要素と入力要素のベースライン

残念ながら、Chromeでは残念ながらスパンのテキストが一貫して整列していません。それに続く選択があっても問題ありませんが、入力が続いた場合、テキストは、ベーラインではなくボトムに揃うように見えます。

私は、センターの代わりにベースラインを使用して、潜在的に異なるフォントサイズを考慮しています。私は私のコードを簡素化し、 http://codepen.io/rachelreveley/pen/jrmbJP

に投稿しているクロームで

不正なレイアウト

Incorrect layou in Chrome

FF

Correct layout in FF

で正しいレイアウト

form, 
 
fieldset { 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 
label { 
 
    display: flex; 
 
    align-items: baseline; 
 
    flex-direction: row; 
 
    justify-content: flex-start; 
 
    padding: .3rem 0; 
 
    flex-wrap: wrap; 
 
} 
 
fieldset span { 
 
    text-align: right; 
 
    padding: 0 1rem 0 0; 
 
} 
 
input, 
 
select, 
 
textarea { 
 
    padding: .5rem; 
 
}
<form> 
 
    <fieldset> 
 
    <label> 
 
     <span>Label</span> 
 
     <input type="text" /> 
 
    </label> 
 
    <label> 
 
     <span>Label</span> 
 
     <select> 
 
     <option value="" selected="" disabled=""></option> 
 
     <option value="Mr">Mr</option> 
 
     <option value="Dr">Dr</option> 
 
     <option value="Miss">Miss</option> 
 
     <option value="Mrs">Mrs</option> 
 
     <option value="Ms">Ms</option> 
 
     <option value="Ms">Mx</option> 
 
     <option value="Other">Other</option> 
 
     </select> 
 
    </label> 
 
    </fieldset> 
 
</form>

答えて

-1

あなたの入力にplaceholder=" "を追加する必要があり、彼らは完璧に揃えます。

+0

あなたは理由を説明することができます。ここ​​

を使用しているのですか? – Pugazh

+1

私はそれを試して、それは動作します! 私は、Chromeがテキストを含むまでテキスト入力のベースラインを設定していないと思うかもしれません。しかし、これをすべての入力に置く必要はありません。私は多くの多くの形式のサイトを構築しています。 スペースなしのプレースホルダ= ""は動作しません。 –

+0

$( 'input')でjQueryで設定できます。attr( 'placeholder'、 '');プレースホルダをどこにでも配置する必要はありません。 –

2

align-items: baseline;のためです。代わりに、更新codepen

form, 
 
fieldset { 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 
label { 
 
    display: flex; 
 
    align-items: center; 
 
    flex-direction: row; 
 
    justify-content: flex-start; 
 
    padding: .3rem 0; 
 
    flex-wrap: wrap; 
 
} 
 
fieldset span { 
 
    text-align: right; 
 
    padding: 0 1rem 0 0; 
 
} 
 
input, 
 
select, 
 
textarea { 
 
    padding: .5rem; 
 
}
<form> 
 
    <fieldset> 
 
    <label> 
 
     <span>Label</span> 
 
     <input type="text" /> 
 
    </label> 
 
    <label> 
 
     <span>Label</span> 
 
     <select> 
 
     <option value="" selected="" disabled=""></option> 
 
     <option value="Mr">Mr</option> 
 
     <option value="Dr">Dr</option> 
 
     <option value="Miss">Miss</option> 
 
     <option value="Mrs">Mrs</option> 
 
     <option value="Ms">Ms</option> 
 
     <option value="Ms">Mx</option> 
 
     <option value="Other">Other</option> 
 
     </select> 
 
    </label> 
 
    </fieldset> 
 
</form>

+0

申し訳ありませんが、テキストのベースラインが整列されていることを絶対に確信したいと思っているので、私はセンターを使用していないと言いました。 centerを使用すると、テキストのサイズが変化すると、ベースラインの位置がずれることになります。 –