最常用且稳妥的多行文字溢出渐隐方案是用::after伪元素配合渐变背景,关键在于遮罩层精准覆盖文字末尾且不干扰点击与选中;需设置容器行数限制、隐藏溢出,并用绝对定位伪元素加线性渐变实现透明过渡,同时设pointer-events:none确保交互正常。
用 ::after 伪元素配合渐变背景,是最常用也最稳妥的多行文字溢出渐隐方案。关键在于遮罩层要精准覆盖在文字末尾,且不影响点击和选中行为。
先确保父容器能控制显示行数,并裁剪多余内容:
display: -webkit-box 或使用 line-clamp(现代浏览器)line-height: 1.5)和最大高度(如 max-height: 3em)overflow: hidden 和 position: relative(为伪元素定位准备)伪元素盖在文字右下角,用从不透明到透明的渐变模拟“渐隐”效果:
position: absolute; bottom: 0; right: 0; width: 100%; height: 2em;
background: linear-gradient(to bottom, rgba(255,255,255,0), #fff 70%);(白色底时)#fff 换成实际背景色,或改用 rgba(255,255,255,1) + 透明过渡pointer-events: none; 确保不拦截文字交互部分老浏览器(如旧版 Safari)对 -webkit-line-clamp 支持不稳定,建议:
-webkit-box-orient: vertical + -webkit-line-clamp 组合,同时保留 display: -webkit-box
to right,底部用 to bottom
height: calc(1.5em + 4px)),避免露底z-index: 1 防止被其他元素遮挡基本上就这些。核心就是“容器截断 + 伪元素遮罩 + 渐变过渡”,不复杂但容易忽略定位和 pointer-events。