2010-07-15 41 views
0

Example of problem http://img638.imageshack.us/img638/3733/97914817.jpg在標籤中垂直對齊文本div

我試圖重新編碼一箇舊的表單。它充滿了我想用CSS取代的表格。不過,我無法將文本和表單元素垂直排列在一起。如圖所示,文本默認從頂部開始,而不是從中間開始。該行周圍的藍色突出部分是夢織布者對正在發生的事情的解釋/選擇。

我有標籤和輸入div,都浮在左側,在一個名爲#light的div裏面,這是一個普通的容器。這是我的css代碼的樣子:

#contentBox{ 
width: 600px; 
float: left; 
background-color: #e2e2e2; 
overflow: auto; 
border-color: #c5c5c5; 
border-width: 1px; 
border-style: solid; 
font-size: 12px; 
} 
#light { 
float: left; 
width: 500px; 
padding: 15px; 
background-color: #e2e2e2; 
margin: 7px; 
border-color: #c5c5c5; 
border-width: 1px; 
border-style: solid; 
vertical-align: middle; 
} 
input { 
float: right; 
width: 20em; 

} 
label { 
float: left; 
text-align: right; 
vertical-align: baseline; 
} 

任何想法是什麼問題是?我嘗試在不同的divs中調換垂直對齊,向不同的方向漂浮,擺脫標籤,但我最終遇到的問題更多而不是更少。

回答

3

通常情況下,要解決這個問題,我使用line-height屬性:

例:

div{width:600px;font:normal normal 12px/30px Arial, Helvetica, sans-serif;} 

這將字體設置爲12像素,和行高至30像素,保持字體在其30行內垂直對齊。

+0

這確實解決了文本未對齊的問題,但現在輸入框將偏離中心。出於某種原因,將輸入div的高度設置爲與行高不一致,其中一個或另一個將略微偏離中心 – Flarex 2010-07-19 14:37:32

+0

想象一下,您的輸入爲12px的文本,它將需要一些填充以避免文本里面用輸入邊框填塞,所以,添加padding:3px;然後,對於30px的線寬,你仍然需要12px(12px + 3px + 3px = 18px)add例如margin:6px 0; (如果您需要,將發佈一個工作示例! – Zuul 2010-07-19 14:45:27

4

您不能在元素上使用vertical-align,除非它們是this article解釋的表格單元格(或如此顯示)。如果只有一行文本,請將line-height設置爲元素高度。

0

文本的垂直對齊可能令人難以置信的煩人或難以置信的簡單。

如果所有相關元素的大小都是已知的,那麼最好的方法是在文本本身上設置手動填充/邊距以確保其對齊。

如果要垂直居中的內容是動態的,請輸入this is your best bet

0

不確定,但您的輸入標籤設置爲「float:right」,因此其高度不會被父級考慮在內。因此,父母的高度實際上可能是標籤的高度(我懷疑Dreamweaver沒有正確解釋瀏覽器做了什麼。)嘗試刪除輸入標籤上的浮點數,看看它是否有所作爲。

0

垂直對齊只能應用於內聯元素。 最好的解決方案是修改您的HTML並使其像在this examples

+0

錯誤。垂直對齊僅適用於具有'display:table-cell'的元素。 – You 2010-07-15 19:14:27

+0

img的垂直對齊(例如,請參閱http://www.w3schools.com/cssref /pr_pos_vertical-align.asp) – 2011-08-04 00:53:52

0

您可以去'便宜'的解決方案,並將padding-top應用於標籤div。