css 为什么给span加vertical-align: middle不起作用? 梦里梦外; 2021-12-14 23:59 128阅读 0赞 [vertical-align][]是什么意思?先举个例子! 这句[html元素][html]中的文本为什么不能垂直居中。 <style> span\{ height:60px;[vertical-align][]: middle; \#1c93b7; \} </style><span >dddddddda</span>我用浏览器试了一下,它的展示图如下: [![0824ab18972bd407cd7a0f6e7b899e510eb309e0.jpg][]][0824ab18972bd407cd7a0f6e7b899e510eb309e0.jpg 1] [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" οnmοuseοver="this.style.verticalAlign='bottom'" οnmοuseοut="this.style.verticalAlign='middle'">text to align</td> </tr></table> [![4e4a20a4462309f7c3d27181720e0cf3d6cad6e0.jpg][]][4e4a20a4462309f7c3d27181720e0cf3d6cad6e0.jpg 1] 通过mouse over和out事件,我们动态的改变文字的垂直对齐位置,它确实按照你的做法工作。在msdn的文档中我发现它是可以做用于span元素的,但是没有详细解释vertical-align是怎么工作的。后 来在《CSS20 Programmer’s Reference》(注1)查了查,Page12的The Inline Layout Model小节说明了行内布局的模型。这里有一个模型图。这段文字说明了在一行文字布局中,vertical-align是用来影响不同元素的对齐位置 的。 [![95eef01f3a292df54e817086bc315c6035a873e7.jpg][]][95eef01f3a292df54e817086bc315c6035a873e7.jpg 1] 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的[中行][Link 1], 需要给它定义一个[line-height][]的属性,让[line-height][]为60px,作用于一行的vertical-align就按你的想法工作了。table的单元格,因为是一行内的元素,因此vertical-align按照我们的想法来工作,但是在span中并不是这样的。注1《CSS20 Programmer's Reference》,作者Eric A. Meyer,一本CSS20的编程参考手册。 还有: vertical-align对一些特定显示样式(例如单元格显示方式:table-cell)的元素才会起作用。所以要实现上下垂直居中对齐,可以采用如下样式 <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> </td> <td> <div> <div> <code>display</code> <code>:</code> <code>table-cell</code> <code>; </code> <code>/*按照单元格的样式显示元素*/</code> </div> <div> <code>vertical-align</code> <code>:</code> <code>middle</code> <code>; </code> <code>/*垂直居中对齐*/</code> </div> </div> </td> </tr> </tbody> </table> * 上面的设置方式相比设置[line-height][]属性,可以兼容文字有多行的情形。 下面举例说明: 1. 创建[Html元素][Html] <table> <tbody> <tr> <td> <div> 1 </div> <div> 2 </div> <div> 3 </div> </td> <td> <div> <div> <code><</code> <code>div</code> <code>></code> </div> <div> <code> </code> <code><</code> <code>span</code> <code>>测试测试,即便是多行,我也还是垂直居中对齐的。</</code> <code>span</code> <code>></code> </div> <div> <code></</code> <code>div</code> <code>></code> </div> </div> </td> </tr> </tbody> </table> 2. 设置css样式 <table> <tbody> <tr> <td> <div> 1 </div> </td> <td> <div> <div> <code>div{ </code> <code>width</code> <code>:</code> <code>200px</code> <code>; </code> <code>height</code> <code>:</code> <code>115px</code> <code>; </code> <code>border</code> <code>:</code> <code>4px</code> <code>solid</code> <code>#ebcbbe</code> <code>; </code> <code>display</code> <code>:</code> <code>table-cell</code> <code>;</code> <code>vertical-align</code> <code>: </code> <code>middle</code> <code>;</code> </div> </div> </td> </tr> </tbody> </table> 3. 观察显示效果 [![8b82b9014a90f60323b619e83c12b31bb051ed1f.jpg][]][8b82b9014a90f60323b619e83c12b31bb051ed1f.jpg 1] ref: [https://zhidao.baidu.com/question/455636351.html][https_zhidao.baidu.com_question_455636351.html] 转载于:https://www.cnblogs.com/younes/p/10884730.html [vertical-align]: https://www.baidu.com/s?wd=vertical-align&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao [html]: https://www.baidu.com/s?wd=html%E5%85%83%E7%B4%A0&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao [0824ab18972bd407cd7a0f6e7b899e510eb309e0.jpg]: /images/20211214/7f2746acead84eb68ba9872f8a130292.png [0824ab18972bd407cd7a0f6e7b899e510eb309e0.jpg 1]: https://gss0.baidu.com/94o3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/0824ab18972bd407cd7a0f6e7b899e510eb309e0.jpg [4e4a20a4462309f7c3d27181720e0cf3d6cad6e0.jpg]: /images/20211214/9746006c39384ae4aa632fbe2358e48e.png [4e4a20a4462309f7c3d27181720e0cf3d6cad6e0.jpg 1]: https://gss0.baidu.com/-Po3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/4e4a20a4462309f7c3d27181720e0cf3d6cad6e0.jpg [95eef01f3a292df54e817086bc315c6035a873e7.jpg]: /images/20211214/fd033753223e4347a92e80ee6a64e011.png [95eef01f3a292df54e817086bc315c6035a873e7.jpg 1]: https://gss0.baidu.com/-fo3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/95eef01f3a292df54e817086bc315c6035a873e7.jpg [Link 1]: https://www.baidu.com/s?wd=%E4%B8%AD%E8%A1%8C&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao [line-height]: https://www.baidu.com/s?wd=line-height&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao [Html]: https://www.baidu.com/s?wd=Html%E5%85%83%E7%B4%A0&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao [8b82b9014a90f60323b619e83c12b31bb051ed1f.jpg]: /images/20211214/9e2849c783ed49d89966577216ed7080.png [8b82b9014a90f60323b619e83c12b31bb051ed1f.jpg 1]: https://gss0.baidu.com/94o3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/8b82b9014a90f60323b619e83c12b31bb051ed1f.jpg [https_zhidao.baidu.com_question_455636351.html]: https://zhidao.baidu.com/question/455636351.html
还没有评论,来说两句吧...