跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

如何在Less中实现CSS文本溢出省略号_封装单行与多行截断Mixin

单行省略必须同时满足white-space: nowrap、overflow: hidden、text-overflow: ellipsis且容器有明确宽度;多行省略在Less中依赖-webkit-line-clamp组合四属性(display: -webkit-box、-webkit-box-orient: vertical、-webkit-line-clamp、overflow: hidden),缺一不可,且受限于WebKit/Blink内核,Firefox等仅能降级为max-height+hidden。 单行省略必须同时满足
white-space: nowrap
、
overflow: hidden
、
text-overflow: ellipsis
且容器有明确宽度;多行省略在 Less 中无法真正“跨浏览器兼容”,
-webkit-line-clamp
是唯一实用方案,但只在 WebKit/Blink 内核生效,Firefox 和旧 Safari 会静默降级——这不是写法问题,是 CSS 标准现状。 单行省略 mixin 必须带 width/max-width 约束 Less 编译不校验运行时布局,所以很容易漏掉宽度声明。光写
.ellipsis-one-line()
混合器,却不给调用处加
width
或
max-width
,结果就是样式完全不生效。
width: 100%
只在父容器有明确宽时才可靠;若父容器是
display: flex
且没设
min-width: 0
,子元素的
width: 100%
会撑开,省略失效 对
flex
子项,必须额外加
min-width: 0
或
overflow: hidden
才能激活截断逻辑 内联元素(如原生
)默认不支持
text-overflow
,得先设
display: inline-block
或
block
多行省略 mixin 的四条声明缺一不可 网上很多抄来的
.multi-ellipsis()
少写了
overflow: hidden
或漏了
-webkit-box-orient: vertical
,导致渲染错位或直接无效果。实际生效靠的是这四行组合:
display: -webkit-box
—— 不是
flex
,不是
block
,必须是这个值
-webkit-box-orient: vertical
—— 漏写或写成
horizontal
,
-webkit-line-clamp
就算设了也无效
-webkit-line-clamp: @lines
——
@lines
必须是编译期确定的整数(如
2
、
3
),不能是表达式或未定义变量
overflow: hidden
—— 不是可选,是硬性依赖;没有它,整个机制就退化为普通换行 line-height 单位和内联元素是隐形杀手 这两点不报错、不警告,但会让省略号卡在文字中间或少显示一行,极难排查。 使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件 如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Andr​​oid友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Andr​​oid应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更 下载 立即学习 “ 前端免费学习笔记(深入) ”;
line-height
必须用无单位值(如
1.4
),禁用
px
、
em
、
rem
;否则
-webkit-line-clamp
会把行高当像素硬算,裁剪位置偏移 文本里含
display: inline-block
元素(比如图标、
、自定义组件)会打断
-webkit-box
流式布局;统一改为
display: inline
或外层包
并设
display: inline
父容器高度不能是
auto
或
min-content
,必须设
max-height
(推荐)或
height
,否则行数计算失准 别迷信 mixin,优先考虑 post css -line-clamp Less Mixin 每调用一次,就重复输出一遍带前缀的四行 CSS;30 处使用 = 120 行冗余代码。而
postcss-line-clamp
插件能在构建时统一处理,Less 里只需写语义类名(如
.desc--clamp-3
),还能自动 fallback 到
max-height + overflow: hidden
安全降级。 真正难处理的从来不是怎么写 mixin,而是
line-height
单位混用、父容器高度未约束、内联元素干扰这三件事——它们不会报错,但会让省略号出现在错误位置,且极难定位。

相关文章