这是在网易技术二面的时候面试官问到的一个问题,当时没有答出来,今天在这里作一次解决该问题方法的总结。
单行文本溢出
可以使用 text-overflow: ellipsis
属性来实现单行文本溢出显示省略号,当然还需要加宽度 width
属性来兼容部分浏览器。
|
|
- overflow: hidden; 溢出元素内容区的内容不可见的。
- white-space: nowrap; 文本不会换行,文本会在在同一行上继续,直到遇到
标签为止。用以保证为单行文本 - text-overflow: ellipsis; 使用显示省略符号来代表溢出的文本。
效果如图:
多行文本溢出
方法(一)
|
|
- -webkit-line-clamp 用来限制在一个块元素显示的文本的行数。为了实现该效果,它需要组合其他的 WebKit 属性。
- display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示。
- -webkit-box-orient; 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式。
效果如图:
适用范围:
由于使用了 WebKit 的 CSS 扩展属性,该方法适用于 WebKit 浏览器及移动端,其中移动端大部分是 WebKit 内核的浏览器。
方法(二)
|
|
- 将 height 设置为 line-height 的整数倍,防止超出的文字露出。
- 给 p::after 添加渐变背景可避免文字只显示一半。
- 由于 ie6-7 不显示 content 内容,所以要添加标签兼容 ie6-7(如:…);兼容ie8需要将 ::after 替换成 :after。
效果如图:
适用范围:该方法适用范围广,但文字未超出行的情况下也会出现省略号,可结合js优化该方法。
源代码和运行效果
|
|
效果如图: