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

如何在纯CSS多行打字机效果中为加粗文字加背景色并保留动画?

纯CSS多行打字机效果中为加粗文字添加随动画同步的背景高亮

要实现加粗文字随打字机动画同步显示背景高亮,我们可以通过给<strong>标签添加mask遮罩动画,让背景色的显示进度和父容器的打字机动画完全同步。以下是修改后的完整代码:

修改后的CSS代码

body {
  font-size:30px;
  padding:20px;
  background:#F7F7F7;
  color:#333;
  font-family: arial, sans-serif;
}
h1 {
  max-width: 900px;
}
.type {
  color: transparent;
  background:
    linear-gradient(-90deg,#333 5px,transparent 0) 10px 0, /* 闪烁光标 */
    linear-gradient(#333 0 0) 0 0; /* 普通文字颜色 */
  background-size: calc(var(--n)*1ch) 200%;
  background-clip: padding-box, text;
  -webkit-background-clip: padding-box, text;
  background-repeat: no-repeat;
  animation: 
    cursor-blink .7s infinite steps(1),   
    typewriter calc(var(--n)*.05s) steps(var(--n)) forwards;
}
/* 给加粗文字添加高亮背景和同步遮罩动画 */
.type strong {
  background-color: #ffeb3b; /* 高亮背景色,可自定义 */
  padding: 0 2px; /* 给高亮区域添加左右内边距,优化视觉效果 */
  /* 遮罩实现背景随打字进度显示 */
  mask: linear-gradient(90deg, black 0, black) 0 0 / calc(var(--n)*1ch) 100% no-repeat;
  -webkit-mask: linear-gradient(90deg, black 0, black) 0 0 / calc(var(--n)*1ch) 100% no-repeat;
  animation: mask-type calc(var(--n)*.05s) steps(var(--n)) forwards;
}
/* 打字机文字展开动画 */
@keyframes typewriter {
  from {
    background-size: 0 200%;
  }
}
/* 光标闪烁动画 */
@keyframes cursor-blink {
  50% {
    background-position: 0 -100%, 0 0;
  }
}
/* 高亮背景遮罩展开动画 */
@keyframes mask-type {
  from {
    mask-size: 0 100%;
    -webkit-mask-size: 0 100%;
  }
}

修改后的HTML代码

<h1><span class="type" style="--n:200">Lorem ipsum dolor <strong>sit amet</strong>, consectetur adipiscing elit. Mauris sit amet <strong>tincidunt</strong> urna. </span></h1>

关键修改说明

  • 给.type strong设置固定背景色,并通过padding调整高亮区域的视觉范围,避免高亮紧贴文字边缘。
  • 使用mask(兼容-webkit前缀)属性创建遮罩层,遮罩的宽度动画与父容器的打字机动画完全同步,确保高亮背景随文字一起逐段“被打出”。
  • 拆分原动画名称为更具语义化的命名,提升代码可读性。

内容的提问来源于stack exchange,提问作者siaeva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:35:10