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

-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

相关推荐
lbb 小魔仙3 小时前
MuMu 模拟器 6.0 硬核测评:这次升级确实不一样
java·开发语言·模拟器·mumu·硬核测评
前端炒粉3 小时前
手写promise
java·前端·javascript
mONESY3 小时前
Node.js fs 文件系统模块 四种读写方案全解析
javascript·后端
Larcher3 小时前
从回调地狱到优雅异步:Node.js 文件操作进化史
javascript·后端·架构
r_oo_ki_e_3 小时前
Java 线程池
java·开发语言
熊猫钓鱼>_>4 小时前
Electron:当 Web 技术统治桌面
大数据·前端·javascript·人工智能·架构·electron·agent
杜子不疼.4 小时前
【Qt初识】信号槽(二):自定义信号函数与槽函数
开发语言·qt
秋田君4 小时前
Qt_QVariant
开发语言·qt
江华森4 小时前
Python 实现高德地图找房(三):地图可视化与高德 JS API
开发语言·javascript·python
谭光志4 小时前
AI 是怎么操作浏览器的——browser use 实现原理
前端·javascript·ai编程