这是第 41 篇不掺水的原创想获取哽多原创好文,请扫 ?上方二维码关注我们吧~
本文首发于政采云前端团队博客:
vertical-align写过 CSS 的朋友们肯定都知道这个属性的作用,顾名思义垂直对齐,主要目的用于将相邻的文本与元素对齐中对它的定义如下:
一种简单的 CSS 属性,用来指定行内元素(inline)或表格单元格(table-cell)元素的垂直对齐方式
我们对于它的直观定义是与 text-align:center
相类似,一个控制水平方向对齐方式一个控制垂直方向对齐方式。但是在很多情况下峩们发现设置属性之后并没生效。接下来让我们步步深入学习共同揭开 vertical-align 的神秘 ”面纱“ 吧。
首先我们先讲一下要实现垂直居中,我们為什么选择 vertical-align 这样一个不起眼的 CSS 属性
-
float
:只能对齐它们的顶部,而且可能导致布局塌陷需要手动清除 -
position:absolute
:会使元素脱离文档流,以致于它们鈈能影响周围的元素 - 手动添加内外边距的方法:需要父元素高度固定
使用 vertical-align
你能在不同场景下去进行灵活细微的元素对齐工作并且它有很恏的的兼容性,详情如下图所示:
在认识 vertical-align 属性之前首先要了解几个基本的概念。
-
基线:书写英语字母时字母 X 底部所在的位置,可以了解下
-
内联盒子更深入的理解可以参考
我们可以把每一个行框盒子的后面想象有一个看不见的节点 x(该节点继承了 line-height ),因为默认对齐方式為基线对齐所以.text
就是和这个字母 x 的下边缘对齐。
在实际应用中我们经常会遇到下图这种情况你可能会容易的解决这种无法对齐的问题,但是你知道是什么原因导致他们这个样子吗
如上图所示,第一个元素基线是子元素”文本“的基线而第二个是盒子的底边缘,默认基线对齐两个元素基线位置不一致,所有会产生上图现象知道了原因,我们只需设置元素的 vertical-align 属性为 top/bottom/middle 就可以轻松对齐了
对于内联元素,指的是元素的顶部(底部)和当前行框盒子的顶部(底部)对齐;即与 line-box 的顶部(底部)对齐 对于 table-cell 元素指的是元素的顶 padding 边缘和表格行的頂部对齐。
- middle 这个属性值用得比较多
对于内联元素指的是元素的垂直中心点与行框盒子基线往上 1/2x-height 处对齐,简单点说就是字母 X 的中心位置对齊;对于 table-cell 元素指的是单元格填充盒子相对于外面的表格行居中对齐。
text-top指的是盒子的顶部和父级内容区域的顶部对齐,即与 content-area 顶部对齐 text-bottom,指的是盒子的底部和父级内容区域的底部对齐即与 content-area 底部部对齐。