•  阅读 2 分钟

使用 CSS 实现单行或多行文本溢出显示省略号

在前端开发中,文本溢出,是指文本内容超出容器的宽度或高度。基于设计排版需要对文本内容进行限制,否则导致页面错乱。这时通常的做法是把文本内容限制在容器的宽度或高度内,超出部分显示省略号。本文使用 CSS 实现单行或多行文本溢出显示省略号。

单行文本溢出显示省略号

单行文本溢出显示省略号,是前端开发中常见的需求,简单的使用 text-overflow 属性即可实现。注意,该属性需要对文本限制宽度。

.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

现在,我们来看一下效果,我们编写宽度 200 像素的容器,把超出的文本隐藏,显示省略号:

我们生活的蓝色星球,居住着超过 70 亿人口,他们有不同的肤色,装点着多姿多彩的世界。

多行文本溢出显示省略号

使用 webkit 的独有 CSS 属性 -webkit-line-clamp,可以实现多行文本溢出显示省略号。

.truncate-lines {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2; /* 限制行数 */
  overflow: hidden;
}

同样,我们查看效果:

我们生活的蓝色星球,居住着超过 70 亿人口,他们有不同的肤色,装点着多姿多彩的世界。

该方法支持的浏览器有 Chrome 14+, Firefox 68+, Safari 5+, Edge 79+。支持度还可以,如果需要兼容写法,可以尝试下面的样式:

.truncate-lines-compatible {
  position: relative;
  line-height: 20px;
  max-height: 40px; /* 限制高度:行数乘以行高 */
  overflow: hidden;
}

.truncate-lines-compatible::after {
  content: '...';
  position: absolute;
  bottom: 0;
  right: 0;
  padding-left: 40px;
  background: linear-gradient(to right, transparent, #fff 55%);
}
我们生活的蓝色星球,居住着超过 70 亿人口,他们有不同的肤色,装点着多姿多彩的世界。

可以看到,与 text-overflow: ellipsis 的效果差不多相同,但是兼容性更好,适用于所有浏览器。但是,该方法无法做到自适应文字数量,因为它的高度是固定的,无法根据文本内容自动调整,且文字较少时,也会显示省略号,可能需要 js 动态辅助。

> cd ..