2015-11-04 248 views
4

我有這個網站:如何垂直對齊dt標籤相對於其dd標籤?

<dl> 
    <dt><label for='txaText'>Text</label></dt> 
    <dd><textarea id='txaText'></textarea></dd> 
</dl> 

這個CSS:

dt { 
    float: left; 
    text-align: right; 
    width: 30%; 
    padding-right:5px; 
} 
dd { 
    width: 70%; 
    margin: 0; 
} 

但我得到這個:

css1

,我想這一點:

css2

如何才能實現dt標籤相對於其各自dd標籤的垂直對齊?我可以做到這一點,沒有可怕的黑客創建div或指定每個標籤的像素高度?

回答

1

我想我想出了一個您可能會喜歡的解決方案,您可以將您的元素設置爲display:table-cellvertical-align:middle來對齊它們。

CSS:

dl{ 
    border: 1px solid red; 
} 

dt { 
    display:table-cell; 
    vertical-align:middle; 
    width: 30%; 
    padding-right:5px; 
} 
dd { 
    display:table-cell; 
    vertical-align:middle; 
    width: 70%; 
    margin: 0; 
} 

更新CODEPEN DEMO你。

+0

我有幾十頁,每個都有幾十個dt/dd對。我無法爲每一對輸入像素的高度!正如我所說,這是一個「可怕的黑客」。如果我更改默認字體,或者默認textarea高度,我將不得不重新調整所有內容... – Rodrigo

+0

這不是它是根據它的父項進行計算的,但是有一種包裝方式可以同樣做,更新了答案。 –

+0

對不起,您的第二個解決方案有兩個我想避免的問題。 – Rodrigo

0
You can try this code. 

html code: 

<dl> 
    <dt><label for='txaText'><br>Text</label></dt> 
    <dd><textarea id='txaText'></textarea></dd> 
</dl> 

and this css code: 

dt { 
    float: left; 
    text-align: right; 
    width: 30%; 
    padding-right:5px; 
} 
dd { 
    width: 70%; 
    margin: 0; 
} 
+1

使用
實際上並不是一個解決方案,因爲不同的控件具有不同的高度,因此
的數量將是可變的。而且,這徹底摧毀了「垂直對齊」的含義。 – Rodrigo