多行溢出在末尾添加省略号

-webkit-box

目前最主流的方案,但是只能在webkit内核浏览器(Chrome,Safari,edge)和firefox 68+上使用,IE不兼容(IE市场占有率低,可忽略)

css 复制代码
.content{
    width:200px;/*最好设置宽度,否则宽度根据父元素自适应可能出现问题*/
    display: -webkit-box;
    -webkit-line-clamp: 5;/*设置显示行数*/
    -webkit-box-orient:vertical;/*主轴方向,默认值是horizontal即水平排列,也就是子元素(不是文本,子元素中的文本正常换行)在同一行里,会让显示行数的设置失效,改为vertival垂直排列*/
    word-break: break-all;
    text-overflow: ellipsis; /*省略号webkit会自动加,但建议保留*/
    overflow: hidden;/*webkit只是在指定截取位置加省略号,隐藏还是需要这个*/
}

注意-webkit-box-orient:vertical;必须设置,这个相当于告诉webkit是垂直排列,webkit可以根据行数截取,否则lineclamp就会失效,webkit不会截取

注意用word-break: break-all强制换行,如果不写或者white-space: normal那连续的英语单词或者数字等不会自动换行(为了保证连贯性),向右溢出的内容虽然不会影响布局,但是会覆盖右边的元素,影响视觉呈现

兼容所有浏览器的css手搓方案

  1. 父元素div,子元素文本(比如div),在父元素开头加一个div,内容是...模拟省略号
  2. 把这个省略号div设置为右环绕,此时第一行最右边是省略号,其他的文本都是正常排列
  3. 然后需要用一个元素把文本连同省略号一起顶下去这样省略号就在最后一行,可以用一个空白元素或则和直接给父元素设置一个::before(注意这里必须设置content:''和display: block因为默认伪元素是内联元素),高度为把第一行顶到最后一行即可
  4. 然后给文本元素设置负margin把文本拉起来

不需要省略号可以直接overflow: hidden

相关推荐
一颗烂土豆3 小时前
Meshopt 压缩深度解析,为什么它比 Draco 更快
前端·javascript·webgl
kyriewen5 小时前
同事每天催我 Code Review,我写了个脚本让 AI 替我 review PR——现在他反过来催 AI 了
前端·javascript·ai编程
weedsfly8 小时前
迭代器、生成器与异步迭代——让数据“按需流动”的艺术
前端·javascript
假如让我当三天老蒯8 小时前
前端跨域解决方案(学习用)
前端·javascript·面试
铁皮饭盒10 小时前
Bun 哪比 Node.js 快?
javascript·后端
JieE21217 小时前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试
candyTong20 小时前
RTK 技术原理:一次典型会话里,80% 上下文是怎么省下来的
javascript·后端·架构
_柳青杨1 天前
深入理解 JavaScript 事件循环
前端·javascript
大家的林语冰1 天前
ES5 凉凉,Babel 8 正式发布,默认不再编译为 ES5 和 CJS......
前端·javascript·前端工程化
weedsfly1 天前
异步编程全景与事件循环——彻底搞懂 JS 执行机制
前端·javascript