组件/KeyframeStrokeText 关键帧描边

KeyframeStrokeText 关键帧描边

先描边、后填充的 SVG 文字动效

已验证自 0.3.4

用法

基础

示例加载中...

多语言文本

宽度按实际渲染的文字测量,中文与混排文本无需额外设置。

示例加载中...

最佳实践

  • 只用于短文案;长句难读,测量与动画也更重。
  • 文字只是装饰时,把语义标题放在组件外。
  • 大型列表中不要随输入逐字更新 text,每次变化都会重新测量。
  • 在目标页面测试自定义 Web Font,字体加载后宽度会再变一次。
  • 深色背景上给 strokeColor 选高对比色,否则描边阶段几乎不可见。

API 参考

属性

属性名类型默认值说明
textstring''要渲染的文字。
strokeColorstring'#4C4CFF'先出现的描边轮廓颜色。
fillColorstring'#111827'描边后显现的最终文字颜色。
durationMsnumber1800动画时长(ms),描边与填充共用。
strokeWidthnumber2描边宽度,同时决定 viewBox 内边距。
fontSizestring | number64字号;数字转为 px,字符串原样透传。
fontWeightstring | number700字重;越粗,描边轮廓越厚。
fontFamilystring'inherit'字体族。

概述

  • 根节点是 role="img" 的 SVG;非空 text 同步为 aria-label,空文本不输出 aria-label,以不换行空格占位。
  • 挂载后,以及 text、字体属性或 strokeWidth 变化后,用 getBBox() 与 getComputedTextLength() 重新测量;document.fonts.ready 后再测一次。
  • SVG 尺寸取测得的文字框加描边内边距。
  • 减少动态效果时不播放动画,直接显示最终状态。

技术实现

  • 隐藏的测量层固定在原点,两个绘制层带上计算出的偏移;描边按测得长度做 dash 动画,参数经 --tx-kf-* CSS 变量传入。
  • 源码:packages/tuffex/packages/components/src/keyframe-stroke-text/。
查看源码
packages/tuffex/packages/components/src/keyframe-stroke-text/index.ts