2015-11-04 170 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