You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现前置红线的多行CSS动态删除线效果?

实现多行文本的前置动态红色删除线

原代码通过background属性实现的红色删除线位于文字后方,现需实现相同的从右到左展开的动态过渡效果,同时支持多行文本,且红线显示在文字前方。

解决方案代码

CSS 代码

span {
  --thickness: .1em;
  --strike: 0;
  position: relative; /* 为伪元素定位提供基准 */
  font-size: 1.5em;
}

span::before {
  content: '';
  position: absolute;
  inset: 0; /* 填充整个父元素区域 */
  background: linear-gradient(90deg, transparent, red 0) no-repeat 
              right center / calc(var(--strike) * 100%) var(--thickness);
  transition: background-size .4s ease;
  z-index: 1; /* 将伪元素置于文字前方 */
}

span:hover {
  --strike: 1;
  background-position-x: left;
}

HTML 代码

<span>
  Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
</span>

实现逻辑说明

  • 借助::before伪元素创建独立图层,通过z-index: 1将其置于文字前方,直接解决红线在文字后方的问题。
  • 沿用原方案的CSS变量--strike控制背景宽度,结合transition实现鼠标悬停时从右至左的平滑展开动画。
  • 伪元素通过inset: 0完全填充父元素<span>区域,<span>默认的行内特性会自动适配多行文本的每行布局,无需额外处理换行问题。

内容的提问来源于stack exchange,提问作者Three Year Old

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:27:45