baseline 文字的基线对齐

a15991580cdd6e9d0f53f6bf7e12e575.png

align-items 属性定义项目在交叉轴上如何对齐。

.box {
  align-items: flex-start | flex-end | center | baseline | stretch;
}

1.flex-start:交叉轴的起点对齐。2.flex-end:交叉轴的终点对齐。3.center:交叉轴的中点对齐。4.baseline: 项目的第一行文字的基线对齐。5.stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

37f2224dcdea2a4f0e9d986372164533.png

基线对齐

align-items baseline 和 flex-end 是 Flexbox 布局中的两种对齐方式。

align-items: baseline 将 flex 容器中的所有项目的基线对齐。基线是指文本的基线,例如字母 x 的下边缘。

align-items: flex-end 则将 flex 容器中的所有项目对齐到容器的底部。

在选择 align-items 的方式时,请考虑您的布局的需求和目的。

看一下最简单的例子:

<div class="container" style="display: flex;align-items: flex-end">
    <div class="big-text" style="font-size: 26px">大字体</div>
    <div class="small-text" style="font-size: 14px">小字体</div>
</div>

2c427094d10f9f709440f5d93e68a8aa.png

可以看到两个字体所在矩形虽然对齐了,但是两个文字的底部并没有对齐。分析原因发现,是因为文字周围有一圈空白的边距,这个边距在字体大小不同的情况下是不一致的,所以矩形区域虽然对齐了,但是文字底部没有对齐。而这个边距其实和 line-height 有关,所以首先来看看如何从 line-height 的角度出发解决问题。

首先想到的就是把文字周围的边距给彻底去掉,也即设置 line-height: 1,那么为什么说不应该使用这种方式呢?有以下几个原因:

1、在 line-height: 1 的情况下,文字如果长度不定,出现了换行,就会出现两行文字紧贴在一起的情况。

2、line-height: 1 和 overflow: hidden 会出现字体上下部分被剪切的问题。

终极解决方案 lign-items: baseline

可能更多人使用的是 align-items 的 flex-start、center、flex-end 这几个特性,很少使用 baseline、first baseline、last baseline,但是在文字对齐上,后面的这三个特性更有用。

dda711c64f5d2d70ca5974495420c6f6.png

经过实测,align-items: baseline 可以完美的做到文字的底部对齐,修改代码。

<div class="container" style="display: flex;align-items: baseline">
    <div class="big-text" style="font-size: 26px">大字体</div>
    <div class="small-text" style="font-size: 14px;">小字体</div>
</div>

个人理解,前面比较经常用的一些属性值主要是用于盒子的对齐,而 baseline 相关的三个属性值,是让盒子内文字的 baseline 对齐。而 first baseline 和 last baseline 应该是在多行文本情况下有多个 baseline 的情况时,要对齐第一个 baseline 还是最后一个 baseline。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在CSS中,要设置垂直方向上的文本对齐方式,可以使用vertical-align属性。这个属性可以应用于同一行的任意一个选择器,或者父元素的样式上。常用的属性值包括: baseline(使元素的基线与父元素的基线对齐)、sub(使元素的基线与父元素的下标基线对齐)、super(使元素的基线与父元素的上标基线对齐)、text-top(使元素的顶部与父元素的字体顶部对齐)、text-bottom(使元素的底部与父元素的字体底部对齐)、middle(使元素的中部与父元素的基线加上父元素高的一半对齐)、top(使元素的基线对齐到父元素的基线之上的给定长度,可以是负数)、bottom(使元素的基线对齐到父元素的基线之上的给定百分比)等。例如,如果要将一个元素的基线与父元素的顶部对齐,可以设置vertical-align: top;。实际测试结果如下所示: <div class="box1"> 哈哈 </div> <div class="box2"> 呵呵 </div> <style> .box1 { display: inline-block; width: 100px; height: 100px; background-color: red; color: white; font-size: 48px; } .box2 { display: inline-block; width: 50px; height: 50px; background-color: blue; color: white; font-size: 16px; } </style> 在上述示例中,.box1元素的基线与父元素的顶部对齐,而.box2元素的基线则与父元素的基线对齐。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [CSS基线对齐的理解以及处理](https://blog.csdn.net/weixin_43324314/article/details/106894148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [【CSS】vertical-align属性](https://blog.csdn.net/dyk11111/article/details/128114234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值