超级面板
文章目录
最新文章
最近更新
文章分类
标签列表
文章归档

文本省略显示

在开发中有一些情景下需要隐藏过多的文本,比如文章列表中文章的描述或者摘要,并加以省略号给用户提醒,在这里对常用的方法进行简单的总结:

单行文本省略

单行文本省略很简单,只需三行css属性即可:

<p>这里是一段用脸滚出来的文字:卡技术的恢复了开始发说说的反馈啦活动福利很好的数量咖啡还</p>
p {
width: 200px;
white-space: nowrap; //强制文本单行显示
overflow: hidden; //溢出内容隐藏
text-overflow: ellipsis; //文本溢出内容添加省略号提醒
border: 3px solid #333
}

这种方法现在已经被主流浏览器支持,不再多言。

多行文本省略

多行文本省略在有些情况下也会用到,这个功能目前没有通用的纯CSS的实现方式,在不同浏览器的实现方式不一致,主要有以下几种实现方式:

Webkit 浏览器的专有方法

webkit 内核的浏览器提供了一些专用属性 -webkit-line-clamp 支持指定多行文本省略:

p {
width: 200px;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
border: 3px solid #333;
}

Opera 浏览器的专有方法:

webkit 内核的浏览器提供了一些专用属性值 -o-ellipsis-lastline 支持指定多行文本省略:

p {
line-height: 20px;
max-height: 60px;
overflow: hidden;
text-overflow: -o-ellipsis-lastline;
}

支持 Firefox 和 IE 浏览器上的方法:

以上两种方法在火狐和ie上并不被支持,但是可以通过限制内容块的高度,并且为内容块设置一个额外的省略号的代码块覆盖在段落最后:

p {
//为p元素增加相对定位
position: relative;
width: 200px;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
border: 3px solid #333;

//火狐下保证仅显示三行
line-height: 20px;
max-height: 60px;
}

p::after {
position: absolute;
content: '\02026'; //省略号的编码
background: #fff;
bottom: 0;
right: 0;
padding-left: 30px;
//颜色和p的背景色保持一致
2background: linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);
}

这种方法的实现效果会和前两种有所差异,如果对展示的一致性要求较高,可以只采用这种方法,或者下一节的js方法实现。

使用js

使用js基本可以保证在不同的浏览器下有相同的效果,支持这个功能的 js库有好多,比如 Clamp.js 等,相关细节可以参考文档。

参考