CSS vertical-align 属性

CSS vertical-align 语法

在 CSS 中,vertical-align 属性用于设置行内元素(inline)、行内块级元素(inline-block)或表格单元格(table-cell)的垂直对齐方式。

语法:

vertical-align: 长度值 | 百分比 | 关键字;

说明:

vertical-align 的取值有以下 3 种。

  • 长度值:使用具体的长度单位(如 px、em 等)。将元素的基线相对于父元素的基线进行提升或降低。正值提升元素,负值降低元素。
  • 百分比:相对于元素的 line-height 的百分比,通常用来微调垂直对齐。
  • 关键字:常用的关键字如下所示。
    • baseline ( 默认值 ):将元素的基线与父元素的基线对齐。如果元素没有基线(例如图片),则将其下边缘与父元素的基线对齐。
    • sub:将元素的基线降低到父元素的下标位置。
    • super:将元素的基线升高到父元素的上标位置。
    • top:将元素的顶端与整行的顶端对齐。
    • text-top:将元素的顶端与父元素内容区域的顶端对齐(通常是父元素字体顶端)。
    • middle:将元素的垂直中点与父元素基线加上父元素 x 高度的一半对齐。这通常用于垂直居中对齐文本和图片等行内内容。
    • bottom:将元素的底端与整行的底端对齐。
    • text-bottom:将元素的底端与父元素内容区域的底端对齐(通常是父元素字体底端)。

对于 vertical-align 属性,小伙伴们要清楚以下几点。

  • vertical-align 属性只适用于行内元素、行内块级元素和表格单元格。它对块级元素(如 div、p)是无效的。
  • 对于行内元素,vertical-align 是相对于父元素的基线或行框进行对齐。
  • 对于表格单元格,vertical-align 控制单元格内容在单元格内部的垂直对齐。
  • vertical-align 对 Flex 布局和 Grid 布局是无效的。因此在 Flex/Grid 中,我们应该使用 align-itemsalign-self 来控制垂直对齐。

CSS vertical-align 摘要

属于 CSS 文本属性
使用频率
是否继承
默认值 baseline
兼容性 查看
官方文档 查看
MDN 查看

CSS vertical-align 示例

接下来,我们通过几个简单的例子来讲解一下 CSS vertical-align 属性是如何使用的。

示例 1:vertical-align 对齐图片和文本

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        div {
            border: 1px solid gray;
            padding: 10px;
            margin: 20px;
            font-size: 20px; /* 文本大小 */
        }
        img {
            /* 图片默认为 inline 元素 */
            margin-right: 5px;
        }
        .box1 img { vertical-align: baseline; }  /* 图片底部与文本基线对齐 */
        .box2 img { vertical-align: middle; }    /* 图片中点与文本中线对齐 */
        .box3 img { vertical-align: top; }       /* 图片顶部与行顶对齐 */
        .box4 img { vertical-align: bottom; }    /* 图片底部与行底对齐 */
    </style>
</head>
<body>
    <div class="box1">
        <img src="imgs/bird.jpg" alt="">baseline 对齐
    </div>
     <div class="box2">
        <img src="imgs/bird.jpg" alt="">middle 对齐
    </div>
     <div class="box3">
        <img src="imgs/bird.jpg" alt="">top 对齐
    </div>
     <div class="box4">
        <img src="imgs/bird.jpg" alt="">bottom 对齐
    </div>
</body>
</html>

页面效果如下图所示。

vertical-align对齐图片和文本

分析:

对于 vertical-align 属性来说,baseline 是默认值,此时图片底部会与文本基线对齐。middle 会将图片的垂直中心与文本的中点对齐。top 会将图片的顶部与文本的顶部对齐。

小伙伴们可能会发现图片下方总有一条消不掉的缝隙。其实这是因为 vertical-align 默认为 baseline,浏览器为了容纳文字的 “尾巴”(如 g、y),在基线下方留出了空间。

如果想要去除这个缝隙,我们可以将图片的 vertical-align 设置为 bottom、middle 或 top,或者将图片设置为 display: block;。

示例 2:vertical-align 对齐表格单元格内容

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        table {
            border-collapse: collapse;  /* 合并边框 */
            margin: 20px;
            width: 300px;
        }
        td {
            border: 1px solid gray;
            padding: 10px;
            height: 60px;
        }
        td:nth-child(1) { vertical-align: top; }        /* 顶部对齐 */
        td:nth-child(2) { vertical-align: middle; }     /* 垂直居中 */
        td:nth-child(3) { vertical-align: bottom; }     /* 底部对齐 */
    </style>
</head>
<body>
    <table>
        <tr>
            <td>顶部对齐</td>
            <td>垂直居中</td>
            <td>底部对齐</td>
        </tr>
    </table>
</body>
</html>

页面效果如下图所示。

vertical-align 对齐表格单元格内容

分析:

默认情况下,表格单元格的内容是垂直居中的 (vertical-align: middle;)。然后我们可以使用 vertical-align 属性来设置单元格内容的垂直对齐方式。

上一篇: line-height

下一篇: word-spacing

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号