2012-09-10 154 views

回答

19

由於vertical-align在文本輸入上不起作用,所以使用填充來僞造它。

jsFiddle example

CSS

.date-input {  
    width: 145px; 
    padding-top: 80px; 
}​ 
+1

你剛剛打敗了我呢。 – SpaceBeers

+4

這不適用於最新的谷歌瀏覽器。 – pilavdzice

+0

@Jumpei - 你應該刷一下你的CSS簡寫語法。三個值是完全有效的。閱讀https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties – j08691

5
input[type=text] 
{ 
    height: 15px; 
    line-height: 15px; 
} 

這是設置垂直中間位置正確的方法。

+0

感謝您的編輯和upvotes ... –

6

另一種方法是使用line-heighthttp://jsfiddle.net/DjT37/

.bigbox{ 
    height:40px; 
    line-height:40px; 
    padding:0 5px; 
} 

這往往是比較一致的,當你想要一個特定的高度,你並不需要基於字體大小和所需的高度來計算填充,等

1

把它放在一個div標籤似乎是力量的唯一途徑:

<div style="vertical-align: middle"><div><input ... /></div></div> 

可能OT像span這樣的標籤就像div一樣。

0

我發現這個問題,同時尋找解決我自己的問題。以前的答案依靠填充使文本出現在輸入的頂部或底部,或者使用高度和行高的組合將文本與垂直中間對齊。

下面是使用div和定位使文本出現在中間的替代解決方案。檢查出jsfiddle

<style type="text/css"> 
    div { 
     display: inline-block; 
     height: 300px; 
     position: relative; 
     width: 500px; 
    } 

    input { 
     height: 100%; 
     position: absolute; 
     text-align: center; /* Optional */ 
     width: 100%; 
    } 
</style> 

<div> 
    <input type="text" value="Hello world!" /> 
</div>