深扒【vertical-aline】垂直对齐方式——图片文字垂直居中对齐的好帮手

目录

带你深入了解vertical-aline

深扒vertical-aline

关键字的介绍

行内元素的值

baseline

top

bottom

middle

★消除空白

表格单元格的值

效果图

示例代码

★实际应用

行内盒的垂直对齐

头像与用户名垂直居中对齐

表格单元格中的垂直对齐

多行文本垂直居中

块级元素垂直居中


带你深入了解vertical-aline

该属性貌似大部分人都没有使用过,但其实它在使**图像和文字垂直对齐**上是一个非常不错的选择!不仅如此,像前端中比较常用的**line-height**行高,它只能使**单行文本**垂直居中,而vertical-aline不仅能使单行文本垂直居中,还可以使**多行文本**和**块级元素**垂直居中。

要素过多,接下来这篇文章将带领大家深扒vertical-aline,掌握它的实际用法!

深扒vertical-aline

首先,

CSS vertical-align 属性用来指定行内(inline)、行内区块(inline-block)、表格单元格(table-cell)盒子的垂直对齐方式。

以上是在MDN中给出的解释,其中**指定**二字就明确指出了,它仅对以上元素生效,对**块级元素**不生效。

其次,

★vertical-align 属性可被用于两种上下文:

  • 使行内元素盒模型与其行内元素容器垂直对齐。例如,用于垂直对齐行文本内的图片
  • 垂直对齐表格单元格的内容

关键字的介绍

上文首先给出了vertical-aline的基本概念,以及根据概念提出的注意点;其次,给出了vertical-aline的两种实际应用。

一个属性的实际应用,是非常核心且重要的,也是我们学习一个属性的最终目的。但我为什么从一开始就摆出来了呢?是因为,

两种上下文对应两种不同的关键字:1. 行内元素的值;2. 表格单元格的值。这里的不同不是值的不同,而是在不同应用下的对齐方式的不同。

接下来主要介绍baseline、top、bottom和middle四个关键字,其中baseline是默认关键字。

行内元素的值
baseline

baseline默认值指的是以**基线**对齐。什么是基线呢?

★基线,就是你在写英语时的四线三格中的最底下的那一条线

那么引入一下,不知道你有没有发现**图像(img)**好像格外的不一样,在没有设任何padding内边距时,它不像块级元素(block)一样底边紧挨父级边框,它的下边总会有**空白**存在,就像图一那样,

在图片旁边放了xxx等英文字母,图中画了一条线,这条线就是那条基线,可以清楚的看到空白的产生是因为图片的下边缘是和基线对齐的。

其实,不止是图像(img),我发现这是**行内块元素(inline-block)**的一个特性。

图一:

top

那么,当行内块元素设置了top值又是怎样对齐的呢?

使元素的顶部与整行的顶部对齐

像图二这样:

bottom

同样,设置bottom值呢?

使元素的底部与整行的底部对齐

像图三这样:

middle

middle居中,是最最最常用的一个关键字!

它的对齐方式是,

使元素的中心线与该行中心线对齐

图四中展示,也就是图像的中心线与X字母的中线对齐:

示例代码:

HTML:

 <img src="./R-C.jpg" alt="" width="300px" height="168px">
   <!-- 字母作对比 -->
 <span>xxxxxxjjjjjj</span>
 <div></div>

 CSS:

 div {
      width: 300px;
      height: 300px;
      background-color: rgb(165, 42, 63);
    }

    span {
      background-color: blueviolet;
    }

    img {
      vertical-align: middle;
    }
★消除空白

话又说回来,怎么消除空白呢?

其实根据上面对关键字的介绍,也应该发现了,除设置默认值baseline外,设置任意关键字都可以消除空白。

总结:

有两种方法,①图像display:block转为块级元素;②图像添加vertical-aline属性,除默认属性值(baseline)外,设置任意属性值均可以消除空白。 

表格单元格的值
效果图

示例代码

HTML:

 <table>
    <tr>
      <td class="baseline">baseline</td>
      <td class="top">top</td>
      <td class="middle">middle</td>
      <td class="bottom">bottom</td>
    </tr>
  </table>

CSS:

 table {
      margin-left: auto;
      margin-right: auto;
      width: 50%;
      height: 50px;
    }

    table,
    td {
      border: 1px solid black;
    }

    td {
      padding: 0.5em;
      font-family: monospace;
    }
    .bottom {
      vertical-align: bottom;
    }

    .baseline {
      vertical-align: baseline;
    }

    .top {
      vertical-align: top;
    }

    .middle {
      vertical-align: middle;
    }

★实际应用

行内盒的垂直对齐
头像与用户名垂直居中对齐

注意语法,vertical-aline写到图像(行内盒)上

效果图:

示例代码:

HTML:

<div>
    <img src="./20220123222213_2899a.jpeg" alt="">
    <span>我是用户名</span>
</div>

CSS:

 div {
            border: 2px solid red;
        }

        img {
            width: 50px;
            height: 50px;
            border-radius: 50%;
            vertical-align: middle;
        }

        span {
            font-weight: 600;
            font-size: 16px;
        }
表格单元格中的垂直对齐
多行文本垂直居中

语法:

  • 先给父级元素设置display:table属性,使元素作为表格来显示(类似<table>)
  • 再给子级元素设置display:table-cell属性,使元素作为表格单元格显示(类似<td>和<th>)
  • 最后给子级元素(表格单元格)设置vertical-aline:middle属性,实现元素垂直居中 

效果图:

 

示例代码:

HTML:

<div class="parent">
        <div class="child">
            Diligence is the mother of success.<br>
            Work makes the workman.<br>
            Diligence is the mother of success.<br>
            Work makes the workman.<br>
            Diligence is the mother of success.<br>
            Work makes the workman.<br>
            Diligence is the mother of success.<br>
            Work makes the workman.<br>
        </div>
    </div>

CSS:

.parent {
            display: table;
            /* 父元素成为表格(类似<table>)*/
            width: 400px;
            height: 400px;
            text-align: center;
            border: 1px solid red;
            margin: 0 auto;
        }

        .child {
            display: table-cell;
            /*子元素成为表格单元格(类似 <td> 和 <th>)*/
            height: 200px;
            background: yellow;
            vertical-align: middle;
            /* 表格单元内容垂直居中 */
        }
块级元素垂直居中

语法:父级元素设置display:table-cell和vertical-aline:middle属性

注意语法,和多行文本不一样,该例子是要让父级元素变为表格单元格(display:table-cell),使其内部的块级元素垂直居中对齐。

效果图:

示例代码:

HTML:

<div class="father">
		<div class="child"></div>
	</div>

CSS:

.father {
			width: 500px;
			height: 500px;
			background-color: pink;
			display: table-cell;
			vertical-align: middle;
		}

		.child {
			width: 100px;
			height: 100px;
			background-color: grey;
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在逃小屁王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值