前端css 行高属性 line-height

165 阅读4分钟

行高

引子

之前一直对于 "行高" 这个 css 属性不够熟悉,深受 他的困扰,记了忘,忘了查,时间一长又忘了,真是难受。今天就干脆总结一下,发成博客,将这斯的 “罪行” 广示于天下,以后要是再忘也能回来查查😂。如果你也层深受他的困扰,那我向你保证,以后不会了。

核心概念

**文本基线:**文本中字母底部的水平线。

文字内容:没什么好解释的吧,就你写的文字。

什么是行高?

CSS 的 line-height(行高)属性用于控制文本行之间的垂直距离,是排版中非常重要的属性,直接影响文本的可读性和视觉舒适度。

  1. **官方解释:指的是两行文本基线之间的垂直距离,而非文本本身的高度。它包含三部分:文本内容高度 + 上间距 + 下间距(上下间距会平均分配在文本顶部和底部)。

  2. 任何抽象的解释不如例子来的快,直接举例:

line-height: 20px 且文本字号为 16px 时,文本上下会各分配 2px 的间距(总额外空间 4px)。


Oh ! 我突然想到一个很好的好高理解实例 ------ 作业本!

2B1B53EFF451737191E6B5B4A692D0FE.jpg 好家伙这下文本基线都直观起来了!行高就是作业本给你的每一排的垂直方向的空间。你写的字就是内容。只不过 css 中将写的字放在中间,上下平分多余空间。而平时我们写字一般是贴着文本几基线。

取值方式

  1. 无单位数值(推荐使用)

    line-height: 1.5,表示行高为当前元素 font-size 的 1.5 倍(会继承给子元素,子元素会基于自身字号计算)。

  2. 百分比(%)

    line-height: 150%,计算方式与无单位数值类似(基于当前元素字号),但子元素会继承计算后的具体像素值,而非比例。

  3. 固定长度(px/em/rem)

    line-height: 24pxline-height: 1.5em,直接指定固定行高。

  4. normal(默认值)

    浏览器自动计算(通常在 1.2 左右,不同字体可能不同),适用于大多数默认文本排版。

    ⚠️注意:我们一般常用的就是第一种,无单位数值,因为会基于自身字号计算,字体改变自动适应,并且还可以将这一性质传给子元素。

常见作用

  1. 优化文字排版。

    跟你的作业本一样。不同的作业本的格子高度不一样。是为了让你好写。

    当然,行高需要配合字体大小设置才好看。这就是为什么 同样的本本,你写出来的文章整体看起来总是没有 你们班班花的好看,是吧,😁。哈哈,开玩笑,不是 ‘你’ ,是 ‘我’ 😂。

    👉 推荐值:正文文本 1.5~1.6,标题 1.2~1.3。这样好看,我问的班花。

  2. 文本垂直居中

    line-height 的规则 是先将文字放在垂直空间的中间,然后上下平分空余空间。我们可以利用这一点设置元素高度(height)等于 line-height 。这样,单行文本会在元素内垂直居中。

    千万别小瞧他,他可是常用的让单行文本垂直居中的方式 。

    .btn {
      height: 40px;
      line-height: 40px; /* 与 height 相等,文本垂直居中 */
      text-align: center; /* 水平居中 */
    }
    
  3. 控制多行文本间距

    对于段落、列表等多行文本,也通过行高控制行间距,使整体排版更舒适。

    p {
      font-size: 16px;
      line-height: 1.6; /* 行高为 25.6px (16×1.6) */
    }
    
  4. 影响内联元素的垂直空间

    行高和内联元素的关系很紧密的。

    内联元素不能设置高度,他的垂直空间就是由行高决定。

    行高会间接影响内联元素(如 spana)的「可点击区域」或「背景覆盖范围」。


和块级元素的关系

块级元素:

  • 可以手动设置宽高。

因此,块级元素的 line-height 不会影响自身高度。(除非没有设置 height 且内容为空)。但块级元素的 line-height 会影响内部文本的布局。

和内联元素的关系

内联元素:

  • 不能手动设置宽高。

所以 ,内联元素高度由内容和行高(line-height)决定。