图文排版 之 line-height

图文排版 之 line-height

设置行盒子的高度.

line-height 经常被用来设置多行文本的行间距. 对于块级元素, line-height 制定了行盒子的最小高度. 对于非替换的内联元素, line-height 的值用来计算行盒子的高度.

一般来说, 大家都知道一个 div 的高度默认是由其子元素撑起的, 但是负责撑起的却不是 font-size 而是 line-height.

从下图可以看出, 当 font-size0 但是 line-height16px 的时候 div 被撑起了, 说明撑起 div 的是 line-height 不是 font-size.唉, 这时候聪明的你会问了🤔️, 为啥 font-size0 的时候 div 塌陷成一条线了呢? 这就和 line-height 的默认属性值 normal 有关系了.
在这里插入图片描述

属性值

line-height 的属性值一共可以有四种类型, 分别是关键词 normal, number 类型, length 类型, 和 percentage 类型.

number 类型

如果值为 number, 那么是没有单位的. 最终的 line-height 大小是 number * font-size 的值. 如果通过浏览器开发者工具的已计算的标签页, 看到的值也是 number 而不是乘积后的结果.

MDN 中介绍大多数情况下, number 是最推荐设置 line-height 的方式, 可以避免因为继承而出现的奇怪结果.

.number {
  font-size: 20px;
  line-height: 1.5;
}

从下图可以看出来, 因为 line-height 的值是 number 类型, 最后计算的结果是 1.5 * 20px = 30px, 又因为整个文字是两行, 所以 div 高度是 60px
在这里插入图片描述

关键词 normal

具体 normal 所设定的 line-height 有多少取决于浏览器的实现, 包括火狐浏览器在内的桌面浏览器使用 1.2 左右的默认值, 当然取决于元素的 font-family. 所以可以回答上面的问题了, 因为 font-size 的值为 0, 所以不论乘以多少还是 0, 也就没有高度了.
Edge/Chrome 浏览器中, normal 的值大约是 1.4, 在 Safari 浏览器中大约是 1.125.
在这里插入图片描述

在这里插入图片描述

下面看看不同的字体对 line-height 的影响, 在 macOS 中, 苹方字体的 normal 是上面算过的 1.125, 但是宋体和楷体的 normal 就是 1 了.
在这里插入图片描述

length 类型

可以使用带有单位的长度值作为 line-height, 如果使用 em 单位可能产生意想不到的效果😓.

.em-2 {
  line-height: 1em;
}
.em-2 .son {
  font-size: 2em;
}
<div class="em-2">
  <div class="son">
    Lorem ipsum dolor sit...
  </div>
</div>

在这里插入图片描述

糟糕的事情出现了, 文字挤在了一起, 这是因为子元素设置的 line-height 虽然从父元素继承了 1em 但是这个 em 是相对于父元素的 font-size 也就是默认的 16px 计算的, 导致子元素的 line-height 也是 16px. 所以这个继承现象比较奇怪, 要谨慎使用 em 为单位的 line-height

percentage 类型

相对于元素自身的 font-size 设置. 结果就是百分数乘以元素自身计算出来的字体大小, 百分比也可能带来意想不到的效果.

.parent {
  line-height: 100%;
  margin-top: 2em;
}
.parent .son {
  font-size: 2em;
}
<div class="parent">
  <div class="son">
    Lorem ipsum dolor sit...
  </div>
</div>

和上面 length 类型的例子一样, 样式出了问题. 同样 .son 继承了 .parentline-height 100%, 但是这个 100% 是相对于 .parentfont-size 计算的.
在这里插入图片描述

其他

1️⃣ MDN 推荐网页的主要段落文字, 要设置 line-height 最小为 1.5, 这样可以提高用户在低可视条件下的阅读体验, 同时帮助有阅读困难的用户.

2️⃣ 通过将 line-height 和容器的 height 设置为一样的大小可以实现单行文字的垂直居中

3️⃣想要实现类似圆形文字头像的效果, 如果想要通过设置四边相等的 padding 来实现的话, 就一定要注意 line-height,

.circle {
  display: inline-block;
  padding: 10px;
  border-radius: 50%;
  background-color: #575fcf;
  line-height: 16px;
}
<div class="circle"></div>

默认 font-size 就是 16px, 可以看到设置与不设置 line-height 直接影响到了结果究竟是圆还是椭圆.(左边设置, 右边没设置)
在这里插入图片描述

谢谢你看到这里😊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值