新闻详情

新闻详情

首页 / 资讯中心 / 详情

图表为什么会动:揭秘 Lieflat Charts 入场动画 reveal 机制与 reduced-motion 降级方案

发布时间:2026/11/10 18:01:30来源:尧图网络
图表为什么会动:揭秘 Lieflat Charts 入场动画 reveal 机制与 reduced-motion 降级方案
图表为什么会动揭秘 Lieflat Charts 入场动画 reveal 机制与 reduced-motion 降级方案【免费下载链接】lieflat-chartsData visualization Skill for AI Agents, turning data into polished, interactive HTML charts. 面向 AI Agents 的数据可视化 Skill将数据快速生成精致、可交互的 HTML 图表。项目地址: https://gitcode.com/gh_mirrors/li/lieflat-chartsLieflat Charts 是一个面向 AI Agent 的数据可视化 Skill能把数据快速生成为精致、可交互的 HTML 图表。它生成的图表不只是画出来了还会在你滚动到视野时才优雅地动起来——这套入场动画叫做reveal 机制。本文带你彻底搞懂它为什么这么做、怎么做到以及它如何尊重系统的减弱动态效果prefers-reduced-motion设置为敏感用户自动降级成静态图表。为什么图表要动入场而不是直接就在那想象一份包含十几张图表的年度报告页。如果所有图在页面加载时就同时播放动画你会错过大部分效果视觉上也太吵。Lieflat Charts 的设计哲学是动画服务于阅读节奏——图在你看到它的那一刻才动动一次就够想再看就点一下重播。具体规则见 SKILL.md 第二节的动画硬规则入场动画默认开启节奏是quarticOut快进快停不弹跳波浪入场除外可用elasticOut点阵逐点延迟 8–15ms条形逐根延迟 80–130ms形成有呼吸感的 stagger统一 reveal 机制滚入视野才播 点击重播必须带prefers-reduced-motion降级这是硬性要求不是可选项下面是几种典型入场节奏的实拍效果reveal 机制的三层拆解整个机制浓缩在 mono-tokens.js 的obsReveal函数里这是所有图表ECharts / Chart.js / 手写 SVG共享的风格正本。第一层IntersectionObserver 触发滚入即播obsReveal内部创建一个 IntersectionObserver阈值设为 0.3——即图表容器有 30% 面积进入视口才判定可见然后执行回调fn开始渲染并立即io.disconnect()断开观察。这意味着首屏外的图表不浪费性能提前渲染每张图只自动播放一次滚动回来不会反复触发第二层timer 登记与清理防动画叠加手写 SVG 类图表常用setInterval做逐点/逐根 stagger。obsReveal配了一个keep(id, t)登记机制每次重播前先把上一轮登记的所有 timer 全部clearInterval掉再执行渲染函数。这就是自检清单里timer 不叠加的来源——反复点击不会让动画越叠越快。第三层点击重播 SVG 重置渲染容器被设置cursor: pointer并绑定 click 事件再次触发go()清 timer → 清空 SVG 内容innerHTML→ 重新渲染。对 ECharts 版本eReveal则是clear()后重新setOption()Chart.js 版本cReveal则是destroy()后重建实例。三种引擎、一条代码路径。在 templates/glance-gallery.html 中可以找到这套机制最完整的实现样本18 张 Glance 图全部通过eReveal/cReveal/obsReveal统一接管。reduced-motion 降级把动效变成开关把开关交给系统动画再好看对前庭敏感、晕动症用户也是负担。Lieflat Charts 的降级策略分两条线且都内建在 token 里随每个成品一起分发① CSS 动画类媒体查询直接掐掉。mono-tokens.js的MOTION.css内联了.pop缩放入场、.fade淡入、.draw描线三个 CSS 动画类并自带降级段media (prefers-reduced-motion:reduce){ .pop,.fade{animation:none} .draw{animation:none;stroke-dasharray:none;stroke-dashoffset:0} }关键细节是.draw不仅关掉动画还重置stroke-dasharray/offset——否则线条会停留在未画出的空白状态。系统开启减弱动态效果后用户看到的是完整但静止的图。② 声明式动画引擎入场时机由 reveal 保证。ECharts / Chart.js 的动画是引擎声明式驱动animationDuration、easing、delayCSS 媒体查询管不到它们。但正因为 reveal 机制把何时开始渲染的控制权握在自己手里降级后的体验依然成立系统开启减弱动态效果时用户滚动到图表处看到的是瞬间成形的完整画面而不是自动播放的长动画——动画永远不会在用户没看到时偷偷发生。这条降级规则被写进了交付前自检清单SKILL.md 第八节第 6 条reveal 正常滚入播、点击重播、timer 不叠加、reduced-motion 降级在——缺任何一项都要返工。你可以在 examples/lenny-2026-survey.html 这份完整成品里看到降级样式如何随单文件一起分发。动画的性格约束快进快停不弹跳reveal 只是什么时候动怎么动由 token 的MOTION段锁死参数取值含义enter900ms常规入场时长enterSlow1200ms大图 / 关系图时长easingquarticOut快进快停不弹跳staggerDot12ms/个点阵逐个延迟8–15 区间staggerBar100ms/根条形逐根延迟80–130 区间另一条隐性规则同样重要动画不可优于结构——如果一个效果需要发明新布局才能安放它就不配存在。所以你会看到 templates/ 下的所有模板动效节奏和入场方式都高度一致换数据不换性格。自己动手验证三步看懂 reveal如果你想亲手体验这套机制打开 templates/glance-gallery.html先不要滚动观察首屏外的图表容器是空白状态——动画还没开始缓慢向下滚动注意每张图在你看到它的瞬间才播放入场动画反复点击任意已播完的图表会看到它干净利落地重播一遍timer 已先被清空不会叠加加速最后一步在系统设置里开启减弱动态效果macOS辅助功能 → 显示 → 减弱动态效果刷新页面——所有入场动画消失图表直接呈现完整状态小结把动当作交付的一部分Lieflat Charts 的 reveal 机制看似只是一个obsReveal函数实际是把四件事做成了硬约束时机滚入视野才播性能与阅读节奏双赢重播点击即重放timer 清理保证不叠加♿降级prefers-reduced-motion是必选项降级后图表完整可读️性格统一缓动、时长、stagger 全部来自 mono-tokens.js所有模板一眼一个家族对于用 AI Agent 生成图表的用户来说这套机制是隐形的——你只说帮我把这季度数据画一下拿到的单文件 HTML 就已经自带了全部动效与无障碍降级。想了解它支持哪些图型可以看 catalog.md 的 49 张图型目录以及 templates/reports/index.html 的 12 套报告模板索引。【免费下载链接】lieflat-chartsData visualization Skill for AI Agents, turning data into polished, interactive HTML charts. 面向 AI Agents 的数据可视化 Skill将数据快速生成精致、可交互的 HTML 图表。项目地址: https://gitcode.com/gh_mirrors/li/lieflat-charts创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/11 13:52:51

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/11 9:31:44

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/11 5:36:08

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/10 15:15:31

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉