vertical-align是什么意思?
来源:互联网 发布:js三行三列布局 编辑:程序博客网 时间:2024/04/30 03:57
早上一个同事提出了一个问题,下面这句html元素中的文本为什么不能垂直居中。
<span style="height:60px;vertical-align: middle; background-color: #1c93b7;">
dddddddda</span>
我用浏览器试了一下,它的展示图如下:
vertical-align声明在很多中文文档中解释是“决定元素在垂直位置的显示”,它有下面几个参数baseline | sub | super | top | text-top | middle | bottom | text-bottom |
baseline:与元素的基线对齐。
middle:与元素中部对齐。
sub:字下沉。
super:字上升。
text-top:文本顶部对齐。
text-bottom:文本底部对齐。
top:和本行位置最高元素对齐。
bottom:和本行位置最低元素对齐。
如果按照字面意思理解vertical-align:middle就应该是文字在元素的垂直位置的最中央,把入前面那个标签中,它的位置应该在一个height为60px的box的中央啊。但是事实上不是这样的。
如果这个vertical-align:middle用来定义一个单元格td,那么它和你想像的一样起作用,看看下面的例子
<tr>
<td style="height:80px;vertical-align:middle" onmouseover="this.style.verticalAlign='bottom'"
onmouseout="this.style.verticalAlign='middle'">
text to align</td>
</tr>
</table>
通过mouse over和out事件,我们动态的改变文字的垂直对齐位置,它确实按照你的做法工作。在msdn的文档中我发现它是可以做用于span元素的,但是没有详细解释vertical-align是怎么工作的。
后来在《CSS20 Programmer’s Reference》(注1)查了查,Page12的The Inline Layout Model小节说明了行内布局的模型。这里有一个模型图。这段文字说明了在一行文字布局中,vertical-align是用来影响不同元素的对齐位置 的。
W3C官方对vertical-align做了下面的解释:
This property affects the vertical positioning inside a line box of the boxes generated by an inline-level element.
实际上,一个Box中由很多行很多元素组成,vertical-align只作用于在同一行内的元素,它的垂直并不是相对于整个Box而言的。前面那个 span定义了一个60px的高度,但是这个span的Box中存在很多行,那段文本并不能对齐到span的中央。因此希望那段文本对齐span的中行, 需要给它定义一个line-height的属性,让line-height为60px,作用于一行的vertical-align就按你的想法工作了。
table的单元格,因为是一行内的元素,因此vertical-align按照我们的想法来工作,但是在span中并不是这样的。
注1、《CSS20 Programmer's Reference》,作者Eric A. Meyer,一本CSS20的编程参考手册。
- vertical-align是什么意思?
- vertical-align是什么意思?
- vertical-align
- vertical-align
- vertical-align
- vertical-align
- vertical-align
- vertical-align
- vertical-align
- vertical-align
- vertical-align
- Vertical-align
- text-align: vertical-align:
- align text-align vertical-align
- text-align与vertical-align
- vertical-align和text-align
- vertical-align 权威图解。
- vertical-align释疑
- 金融时报:中国人的博客暴力
- 创业之初--最近好忙
- LINUX常用命令
- 【CSS技巧】文字分散对齐的方法
- Palm收购案最终未找到买家
- vertical-align是什么意思?
- FrontPage无法识别文件编码问题解决
- Zf Controller层的问题解决
- 什么是PHP中的stdclass()
- Adobe推出的Apollo测试软件提高Ajax技术
- 关于Windows Service 若干问题(连载中)
- CIM、WBEM、SMI-S。。。。。。
- FireFox必备插件(八)
- CIM、WBEM要Web Service化么?