02
文字动效
Text Effects12 PROMPTS请用 HTML + CSS + 原生 JS 实现"翻牌计数(Flip Counter)"动效。
【效果】机械翻页时钟式的数字牌:一张牌被中缝分成上下两半,翻数时上半面像纸片一样向下折落(旧值消失),随即新值的下半面从折痕处向下展开落定;个位先翻、十位错峰跟进形成进位节奏;可点击按钮触发 +1,空闲时自动演示。
【实现要点】牌面 = 上下两个 overflow:hidden 的半窗(各显示同一整字的半截:伪元素行高 = 整卡高,下半内容 translateY(-50%))+ 动态翻板;翻页两段式——上翻板 rotateX(0→-90°)(transform-origin: bottom),animationend 后上半窗换新值、下翻板 rotateX(90°→0°)(transform-origin: top)展开,再 animationend 后下半窗换新值并移除翻板;容器 perspective、翻板 backface-visibility:hidden;插入翻板后强制 reflow 再加动画类;aria-live=polite 通报数值。
【参数】JS 从 CSS 变量读取:--dur_ms:620(翻牌时长)、--ease:cubic-bezier(0.4,0.1,0.2,1);CSS 变量:--card_w:64(牌宽,牌高 = 1.32 倍)、--font_px:44、--num_color:#f2f5ff、--card_color:#1c2030、--accent:#7b8cff。
【验收】翻转任意暂停帧上下半面都拼成完整数字(无错位半格);两段衔接无跳变、无镜像闪现;连续快速触发不残留翻板(DOM 恒定);进位错峰节奏自然;60fps;reduced-motion 下数值直接切换无翻板。
请用纯 HTML + CSS 实现"故障文字(Glitch Text)"动效。
【效果】一行等宽粗体标题平时干净静止,周期性爆发出短暂的信号干扰:青色与品红两层错位重影从字形边缘露出并横向抽动,像 RGB 通道错位;每次爆发只持续零点几秒,随后立刻回到干净状态,循环往复;下方配一行等宽小字注释。
【实现要点】h1 带 data-text 属性,::before/::after 用 content: attr(data-text) 生成两份彩色重影,z-index 设为 -1/-2 压在主体文字下方;两条 keyframes 各自只在部分时间窗口把 opacity 拉到 1,并用 clip-path: inset(...) 只保留一条横带、translate 做 ±offset 错位,动画时间函数用 steps(1, end) 让每段硬切跳变;两条影子的爆发窗口部分重叠形成双色同屏;动画属性仅 transform/clip-path/opacity。
【参数】CSS 变量:--offset_px:3(错位距离)、--dur_ms:3400(故障周期)、--font_px:44(字号)、--glitch_a:#4cd7d0 与 --glitch_b:#e0559c(双影双色)、--text_color:#f2f3f8。
【验收】静息时文字完全干净可读;爆发时主体字形始终完整、彩色重影只在边缘与横带内出现;steps 切换为硬切无渐变拖影;循环周期稳定不跳变;reduced-motion 下双影隐藏、文字静态显示;改 data-text 文案后效果不变。
请用纯 HTML + CSS 实现"流光渐变字(Gradient Flow Text)"动效。
【效果】一行粗体标题内部有渐变流光持续横向流动:银白基底上紫色与蓝色的光带周期性掠过,循环无缝、速度均匀;下方配一行等宽小字注释。
【实现要点】background-image: linear-gradient(90deg, a 0%, b 33%, c 66%, a 100%)(首尾同色保证周期性);background-size: 200% 100%;-webkit-background-clip: text 与 background-clip: text 双写,color: transparent;keyframes 让 background-position 从 0% 到 200% 线性无限循环;加 @supports not (background-clip:text) 降级为纯色。
【参数】CSS 变量:--grad_a:#f2f3f8、--grad_b:#7b7fbd、--grad_c:#5e93c4(低饱和三色,a 同时是首尾色,银白基底上只有一抹淡彩掠过)、--dur_ms:4200(周期)、--font_px:34(字号,容器较窄时会自动换行、不会裁切)、--angle_deg:90(渐变角度)。
【验收】流动连续无接缝感(循环回起点无跳变);60fps;三色参数任改其一立即生效且仍无缝;文字保持可读、未被渐变矩形污染;reduced-motion 下停止流动显示静态渐变。
请用纯 HTML + CSS 实现"荧光划过(Highlight Sweep)"动效。
【效果】一句话中的关键词被一支『荧光笔』从左到右划过:一条微微倾斜的荧光色带从词首推进到词尾,完全盖住文字后文字翻成深色,停留片刻再快速退场,循环往复;荧光带压在文字中下部、末端斜切,像真实马克笔笔触。
【实现要点】mark 上用 no-repeat 的单色 linear-gradient 作 background-image,keyframes 驱动 background-size 从 0% 到 100% 宽(高为 --height_pct)实现推进;background-position 定位条带纵向位置,渐变角度 90deg + skew 做斜切笔触;文字色切换用带延迟的 transition + keyframes color 帧,保证荧光盖满后才翻深色;mark 元素要覆盖 UA 默认的 background-color;循环动画把退场收进同一组关键帧。
【参数】CSS 变量:--hl_color:#d9e05b(荧光色)、--dur_ms:900(划过时长)、--height_pct:62(条带高度,>100 可包住整字)、--skew_deg:-8(笔触倾斜)、--hl_text:#10121a(盖住后的文字色)、--ease:cubic-bezier(0.22,1,0.36,1)。
【验收】推进方向严格从左到右、无纵向闪烁;全程文字完整可读(浅底浅字瞬间不存在);换行文本中高亮逐行生效不串行;60fps;reduced-motion 下荧光静态常显、文字深色可读;改荧光色为深色系后文字对比仍成立。
请用纯 HTML + CSS 实现"无限跑马灯(Marquee Loop)"动效。
【效果】一行大号等宽词组(词间以彩色圆点分隔)从右向左匀速滑过,循环完全无缝——任意时刻画面上都是等距的词组节奏;内容在容器两端渐隐浮现和消失,没有生硬的裁切边缘。
【实现要点】内容完整写两份拷贝放进同一个 flex track(width: max-content),keyframes 从 translateX(0) 线性动画到 translateX(-50%),一个周期恰好平移一份内容的长度实现无缝;间距统一用 flex gap(不要混用 padding);容器 overflow:hidden,mask-image: linear-gradient(90deg, transparent, #000 fade, #000 calc(100%-fade), transparent) 做两端渐隐(双写 -webkit- 前缀);动画只动 transform。
【参数】CSS 变量:--dur_s:16(走过一份内容的循环时长)、--font_px:40(字号)、--gap_px:56(词间距,写在容器内联变量)、--fade_px:72(两端渐隐宽度,0 关闭)、--text_color:#f2f3f8、--accent:#7b8cff(分隔点)。
【验收】循环回起点无任何跳变或间距异常;两端渐隐平滑、无裁切硬边;60fps;增删词组或改 gap 后仍无缝(保持两份拷贝一致);reduced-motion 下停止滚动、静态完整展示内容且无渐隐裁切。
请用 HTML + CSS 实现"描边空心字(Outline Stroke)"动效。
【效果】一行大号粗体标题呈描边空心状态悬停,鼠标移入时实心颜色从文字底部向上灌满整个字形(填充沿水平裁切线推进,描边同时变为填充色),移出时反向退回空心;页面空闲时填充层按周期自动涨落演示。
【实现要点】双层同文案文本:底层 -webkit-text-stroke 描边 + color: transparent 做空心字;上层 position:absolute inset:0 的实心填充字,用 @property 注册 --fill_pct(syntax "<percentage>"),填充层 clip-path: inset(calc(100% - var(--fill_pct)) 0 0 0);hover 时把 --fill_pct 过渡到 100%(transition --fill_pct),自动演示 keyframes 也直接驱动该变量,两条路径同源不打架;两层必须同字体/字号/字距对齐;自动演示包在 @media (prefers-reduced-motion: no-preference) 内且仅 :not(:hover) 播放。
【参数】CSS 变量:--stroke_w:2(描边宽度 px)、--dur_ms:700(填充时长)、--font_px:58(字号)、--stroke_color:#f2f3f8、--fill_color:#7b8cff、--ease:cubic-bezier(0.22,1,0.36,1)、--fill_pct 注册变量(0%=空心,100%=满填)。
【验收】静止态空心字完整可读、描边均匀无锯齿;填充沿水平线推进、无闪烁或两层错位;移入移出均可平滑往返;悬停优先于自动演示(不互相抢动画);reduced-motion 下无自动动画、悬停即时填满;改字号/描边宽度后两层仍精确对齐。
请用纯 HTML + CSS 实现"硬阴影弹跳(Shadow Pop)"动效。
【效果】neobrutalism 风格的标题卡片与词组 chip:2px 实线描边 + 无模糊的彩色偏移硬阴影;鼠标悬停时元素向左上方弹起,硬阴影同步向右下伸长(像物体被顶起),按下时位移与阴影同时归零压回平面,手感干脆带一点回弹。
【实现要点】box-shadow: x y 0 0 color(blur 与 spread 必须为 0 才是硬阴影);hover 时 transform: translate(-lift, -lift) 且阴影从 shadow 增长到 shadow + lift——位移量与阴影增量相等是弹起可信的关键;transition 同时过渡 transform 与 box-shadow,缓动用带超调的回弹曲线 cubic-bezier(0.34,1.56,0.64,1);:active 把位移与阴影归零形成按压;chip 加 :focus-visible 复用悬停态。
【参数】CSS 变量:--shadow_px:6(静息阴影偏移)、--lift_px:4(弹起距离)、--dur_ms:160(过渡时长)、--shadow_color:#7b8cff、--card_color:#171a2b、--text_color:#f2f3f8、--ease:cubic-bezier(0.34,1.56,0.64,1)。
【验收】静息态描边 + 硬阴影边缘锐利无模糊;悬停弹起与阴影伸长严格同步、无悬空感;按下压平反馈干脆;键盘 focus 有与 hover 一致的状态;60fps;reduced-motion 下无位移动画但控件功能完整。
请用纯 HTML + CSS 实现"逐字入场(Stagger Reveal Text)"动效。
【效果】一行标题的每个字符依次从下方浮入:起始状态是下移 + 模糊 + 全透明,逐字错峰上浮聚焦到清晰;全部亮起停留片刻后,再按同样次序向上浮出消散,如此循环,形成波浪式的呼吸节奏。
【实现要点】每个字符包一个 span 并内联 style="--i:序号";span 上设置 animation-delay: calc(var(--i) * var(--stagger_ms) * 1ms),所有字符共用一条 keyframes(0% 隐藏下沉带 blur → 16%-58% 清晰 → 80% 上浮消散);animation-fill-mode:both 保证延迟期间保持初始隐藏;h1 加 aria-label、span 加 aria-hidden。
【参数】CSS 变量:--dur_ms:3600(循环周期)、--stagger_ms:90(逐字间隔)、--rise_px:16(上浮距离)、--blur_px:8(模糊强度,可为 0)、--text_color:#f2f3f8。
【验收】逐字错峰清晰可辨、波形连贯不追尾;整循环无缝衔接;60fps(filter 只作用于少量字符);reduced-motion 下直接静态显示完整文本;任意字符数通用(改 span 数量即可)。
请用纯 HTML + CSS 实现"文字遮罩滚动(Text Mask Scroll)"动效。
【效果】一行粗体标题的字面是暗色渐变基底,一道斜向的窄亮带(白 + 蓝紫光晕)在文字内部周期性往返扫过,像光照在金属字面上移动;亮带扫走后文字回到均匀暗色,任何时刻文字都完整可读。
【实现要点】background-image 用三段式线性渐变(暗基底 a → 亮带 b/c → 暗基底 a,亮带停靠点 calc(50% ± band*1%/2),单位换算不能省,否则渐变整体失效、透明文字隐形);background-size: 300% 100%;-webkit-background-clip: text 双写 + color: transparent;keyframes 让 background-position 在 0% ↔ 100% 间用 alternate 往返;@supports not (background-clip: text) 时降级纯色;reduced-motion 下停帧在 50% 居中构图。
【参数】CSS 变量:--dur_ms:3200(单程扫过时长)、--band_pct:22(亮带宽度)、--font_px:46(字号)、--angle_deg:100(亮带角度)、--mask_a:#565e88(基底字色)、--mask_b:#f2f3f8(高光色)、--mask_c:#7b8cff(光晕色)。
【验收】亮带往返扫过、方向连贯无跳变;任意帧文字是完整的渐变字(无透明断裂或裁切);60fps;三个颜色参数任改其一立即生效且层次依然成立;reduced-motion 下静态停帧、文字完整可读;不支持 background-clip:text 的环境显示纯色文字。
请用 HTML + CSS + 原生 JS 实现"字符扰动(Text Scramble)"动效。
【效果】一行等宽标题从随机符号乱码中逐渐解码成形:先是一整行跳动的 !<>-_[]*# 类符号,随后字符从左往右依次锁定为真实文案,未落定的字符保持噪点色,落定后整行恢复主色并静止;可点击按钮重放,空闲时自动周期重演。
【实现要点】文案放元素的 data-final 属性,JS 读取后为每个字符生成随机 [from, to) 帧区间(from 从左往右递增形成解锁次序);requestAnimationFrame 驱动,但用时间戳节流——每 --char_ms 才刷新一次随机符号,避免逐帧闪烁;未解锁位输出 \u00a0 占位、等宽字体保证宽度稳定;全部锁定后停止 rAF 并恢复主色;扰动中切换 is-scrambling 类染噪点色;h1 用 aria-label 承载语义、内部 span aria-hidden。
【参数】JS 常量从 CSS 变量读取:--char_ms:42(换字间隔)、--cycle_ms:3600(自动重放周期)、--settle_ms:130(落定过渡);颜色 --text_color:#f2f3f8、--noise_color:#6f7bb8;--font_px:40。
【验收】解码推进方向明确(左→右)、落定字符不再回跳;扰动全程宽度零抖动、不换行;60fps 且 document.hidden 时自动暂停;按钮重放与定时重放互不打断进行中的动画;reduced-motion 下直接显示完整文案不做扰动。
请用纯 HTML + CSS 实现"打字机(Typewriter)"动效。
【效果】一行等宽字体标题被光标逐字打出:文字沿字格一个个出现,光标竖线始终贴在最后一个字符右侧闪烁;打满后停留片刻,再逐字删除回空行,如此循环;下方配一行常显的等宽灰字基准。
【实现要点】文本包在 inline-block 的 span 里,overflow:hidden + white-space:nowrap;keyframes 让 width 从 0ch 到 10ch(字符数)循环,打字段与删除段分别用 steps(10, end) 逐格推进,停留段用 steps(1, end);光标用 span 的 border-right 实现,配合独立的 steps(1) 闪烁动画;h1 加 aria-label、span 加 aria-hidden。
【参数】CSS 变量:--dur_ms:5200(打字周期,含停留与删除)、--caret_blink_ms:900(光标闪烁间隔)、--font_px:34(字号)、--text_color:#f2f3f8、--caret_color:#7b8cff。
【验收】逐字推进严格按字格对齐、无半字符裁切;光标在空行与满行状态都持续闪烁;循环衔接自然(删除到空后立刻重新打字);reduced-motion 下静态显示完整文本且无光标闪烁;更换文案时只需同步文本、ch 数与 steps 数三处。
请用纯 HTML + CSS 实现"波浪文字(Wave Text)"动效。
【效果】一行标题的每个字符按次序上下起伏,形成从左向右行进的正弦波:字符依次升到波峰(波峰微微亮起变色)再落入波谷,循环不断;波形连续平滑、开场即是稳定行进态。
【实现要点】每个字符包一个 span 并内联 style="--i:序号";span 播放同一条 keyframes(0%/100% 下移 amp、50% 上移 amp 并换波峰色),缓动 ease-in-out 近似正弦;animation-delay: calc(var(--i) * var(--phase_ms) * -1ms) 用负延迟错峰,加载即处于稳定波形;容器 line-height 留足上下波幅空间防裁切;动画只动 transform。
【参数】CSS 变量:--dur_ms:2000(波动周期)、--amp_px:10(波幅)、--phase_ms:90(逐字相位差,决定波峰个数)、--font_px:44(字号)、--text_color:#f2f3f8(基底色)、--peak_color:#7b8cff(波峰色,设为同色即关闭染色)。
【验收】波形连续行进、无整体同步跳动;页面加载即处于稳定波形(不从静止突跳);任意帧字符完整不裁切;60fps(transform 合成器路径);reduced-motion 下静态显示完整文本;改字符数后波形依然连贯。