MOTION HUB

荧光划过

Highlight Sweep
#highlight-sweep · 23/72
AUTO · 自动演示

参数调改

PLAYGROUND
荧光色--hl_color
划过时长--dur_ms
4002400
ms
高亮高度--height_pct
30110
%
笔触倾斜--skew_deg
-200
deg
高亮后文字色--hl_text
划过缓动--ease

实现要点

NOTES
  1. 01

    高亮不是背景色而是 background-image:no-repeat 的单色线性渐变 + background-size 从 0% 涨到 100%,宽度推进即『划过』;比用伪元素更省一层 DOM,且天然随文字换行(mark 是 inline,逐行生效)。

  2. 02

    background-position: 0 78% 让荧光带压在文字中下部(height_pct 控制条高,允许超过 100% 包住整字),再给渐变角度加 skew_deg 形成斜切笔触,模拟真实荧光笔的手写斜边。

  3. 03

    文字颜色切换刻意滞后(transition-delay 0.55 周期 + keyframes 内 color 帧):等荧光完全盖过字符再翻成深色,避免『浅黄底浅灰字』的低对比瞬间;深色荧光色请同步改 --hl_text。

  4. 04

    keyframes 里 78%-86% 是满盖停留段,96%-100% 快速退场——把退场收进同一条动画里让循环自洽;若只想要单向划过不退场,把 78% 之后的帧都固定在 100% 宽并把 iteration-count 改 1、fill-mode forwards。

  5. 05

    mark 元素自带浏览器默认黄底(UA 样式 background-color),务必用自定义类覆盖掉,避免与划过动画叠加出两截黄色。

  6. 06

    性能:动画走 background-size(重绘路径),作用面积只有几个字的 inline 盒,开销可忽略;不要把长篇段落整段做扫过动画。

  7. 07

    无障碍:reduced-motion 下跳过扫过动画,荧光常显(静态高亮即最终语义状态);文字语义不依赖动画状态。

源代码

SOURCE

加载源代码…