css 为何给span加vertical-align: middle不起做用?

vertical-align是什么意思?先举个例子!css

 

这句html元素中的文本为何不能垂直居中。html

<style>编程

span{ height:60px;vertical-align: middle; #1c93b7;浏览器

}ide

</style><span >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是用来影响不一样元素的对齐位置 的。this

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的编程参考手册。spa

还有:3d

vertical-align对一些特定显示样式(例如单元格显示方式:table-cell)的元素才会起做用。因此要实现上下垂直居中对齐,能够采用以下样式

1
2
display : table-cell ;       /*按照单元格的样式显示元素*/
vertical-align : middle ;    /*垂直居中对齐*/
  • 上面的设置方式相比设置line-height属性,能够兼容文字有多行的情形。

下面举例说明:

  1. 建立Html元素

    1
    2
    3
    < div >
         < span >测试测试,即使是多行,我也仍是垂直居中对齐的。</ span >
    </ div >
  2. 设置css样式

    1
    div{  width : 200px height : 115px border : 4px  solid  #ebcbbe display : table-cell ; vertical-align middle ;
  3. 观察显示效果

ref: https://zhidao.baidu.com/question/455636351.html

相关文章
相关标签/搜索