2010-07-15 64 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。