2016-09-26 69 views
2

我已經使用彈性框構建了一個表單,並且它在Firefox,Edge和IE11中運行得非常漂亮。Chrome對齊項:選擇和輸入元素的基線

不幸的是,Chrome瀏覽器中的文本並不一致。如果後面跟着一個選擇,那麼很好,但是當輸入後面的文本看起來與底部對齊而不是直線時。

我正在使用基線而不是中心來考慮可能不同的字體大小。在Chrome

Incorrect layou in Chrome

正確的佈局在FF

不正確的佈局

Correct layout in FF

我簡化了我的代碼,併發布到 http://codepen.io/rachelreveley/pen/jrmbJP

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可能沒有設置文本輸入的基線,直到它們包含文本。儘管如此,不必每次都輸入這些信息會很好。我正在建造一個有許多形式的網站。 placeholder =「」沒有空格,不起作用。 –

+0

這可以在jQuery中用$('input')設置。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

對不起,我應該提到,我已經排除使用中心,因爲我想絕對確保文本基線被對齊。如果您使用中心,如果任何文本的大小不同,則基線最終會錯位。 –