尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
CSS 闪烁效果(Blink)实战:用 You-need-to-know-css 示例彻底搞懂 animation-direction 四个取值
前端文档教程【免费下载链接】You-need-to-know-cssCSS tricks for web developers~项目地址https://gitcode.com/gh_mirrors/yo/You-need-to-know-css点击查看免费下载本文围绕 You-need-to-know-css 仓库「动画过渡」章节中的闪烁效果文档blink.md对应中文版 zh-cn/blink.md系统讲解 CSS 文本闪烁动画的两种节奏玩法——step-end硬切换式闪烁与alternate渐变呼吸式闪烁并以此为载体深入剖析animation-direction属性的normal、reverse、alternate、alternate-reverse四个取值在循环动画中的行为差异。读完本文你将能复现文档中的三种提示闪烁效果info / warning / error并能在自己的项目中根据需求正确选择动画播放方向。animation-direction 四个取值效果对比示意图一、animation-direction决定动画播放方向的属性animation-direction是 CSS 动画家族中的一员用于设置动画在每个循环周期中的播放方向。它通常以简写属性animation的子属性形式出现也可以独立声明例如文档演示代码中的animation: .5s blink-alternate infinite; animation-direction: alternate;其中第一行animation简写负责指定动画名称、时长与循环次数第二行独立声明animation-direction两者配合共同决定动画的实际呈现。animation-direction一共接受四个取值标准语义如下取值播放方向循环行为典型效果normal正向from → to每次循环都从正向重新开始动画只朝一个方向推进到终点后瞬间跳回起点reverse反向to → from每次循环都从反向重新开始动画整体倒放等价于把起点与终点互换alternate先正向后反向奇数次循环正向偶数次循环反向交替进行往返「荡秋千」式播放衔接自然alternate-reverse先反向后正向奇数次循环反向偶数次循环正向交替进行与alternate节奏相同但相位相反为了方便读者从视觉上直接理解这四个值的差异原文档以一段从#FFFFFF变化到#b4a078并循环三次的颜色动画为例把四个取值的效果并列展示在上方示意图中可以直观看到normal与reverse全程只朝单一方向推进区别仅在于颜色的起点与终点对调而alternate与alternate-reverse会在每次循环结束后自动掉头二者互为反向起步。二、四个取值逐项拆解循环中的时序行为理解四个取值的核心在于把握「每次循环周期开始时动画从哪个端点出发」。以下以「循环三次」为时间轴进行拆解normal默认值三次循环全部从起点#FFFFFF正向走向终点#b4a078。每个周期结束后状态瞬间回到起点重新播放因此衔接处存在肉眼可见的跳变。reverse三次循环全部从终点反向走向起点。效果与normal完全对称只不过颜色变化的方向颠倒。alternate第 1 次循环正向#FFFFFF→#b4a078第 2 次循环反向#b4a078→#FFFFFF第 3 次循环再次正向。由于每次掉头都从上一周期的终点出发往返过程平滑连续。alternate-reverse第 1 次循环反向#b4a078→#FFFFFF第 2 次循环正向第 3 次循环反向。与alternate的轨迹完全相同只是从反向起步因此相位恰好错开半个周期。需要特别说明的是alternate与alternate-reverse在视觉轨迹上是完全一致的往返于两个端点之间真正的差别体现在起步方向——当两个元素使用同一动画、分别设置为这两个值时就会出现此消彼长的错位闪烁这正是文档交互演示中 warning 与 error 两行文字的设计意图。三、动手实现复现文档中的三种闪烁效果原文档通过 vuepVue Playground由 libs/vuep.min.js 提供见 index.html 的加载内置了一个可实时运行的交互演示其模板完整代码如下来自 blink.md 的#blink_tlp模板中文版见 zh-cn/blink.md 的#blink模板style main { width: 100%; height: 329px; display: flex; flex-direction: column; justify-content: center; align-items: center; } .main p, .main span { width: 388px; padding: 3px 10px; border-radius: 5px; font-size: 14px; } p:nth-of-type(1) { background-color: #f4f4f5; color: #909399; animation: 1s blink-normal infinite step-end; } p:nth-of-type(2) { background-color: #fdf6ec; color: #e6a23c; animation: .5s blink-alternate infinite; animation-direction: alternate; } p:nth-of-type(3) { background: #fef0f0; color: #f56c6c; animation: .5s blink-alternate infinite; animation-direction: alternate-reverse; } keyframes blink-normal { 50% { color: transparent; } } keyframes blink-alternate { to { color: transparent; } } /style template main classmain spananimation-direction: 默认codenormal/code/spanpinfo~/p spananimation-direction: 反向codealternate/code/spanpwarning~ warning~/p spananimation-direction: 反向交替codealternate-reverse/code/spanperror~ error~ error~/p /main /template这段代码的核心结构可以拆成三部分来理解1. 布局与外观外层main使用 Flexboxdisplay: flexflex-direction: column将三组「标签 文本」垂直居中排列p与span统一为388px宽、带border-radius: 5px的圆角块保证三行对齐且视觉整洁。三个p分别使用灰、橙、红三套配色#909399、#e6a23c、#f56c6c对应 info、warning、error 三种语义级别的提示文本。2. 三个段落的三套动画配置段落动画简写方向设置效果p:nth-of-type(1)info~1s blink-normal infinite step-end未声明取默认值normal每 1 秒内前 0.5s 显示原色、后 0.5s 透明硬切换式闪烁p:nth-of-type(2)warning~.5s blink-alternate infinitealternate0.5s 渐隐、0.5s 渐显交替往返呼吸式闪烁p:nth-of-type(3)error~.5s blink-alternate infinitealternate-reverse轨迹与第 2 段相同但从反向起步相位恰好错开3. 两组关键帧的两种写法keyframes blink-normal { 50% { color: transparent; } } keyframes blink-alternate { to { color: transparent; } }blink-normal只声明了50%一个时间点的状态前半周期保持元素原本的文字颜色50%处瞬间变为transparent配合step-end时间函数即steps(1, end)在关键帧到达时直接切换、不做插值渐变形成「可见 0.5s → 透明 0.5s」的方波式闪烁。blink-alternate只声明了to终点状态透明而0%的起始状态没有显式定义——此时动画会自动使用元素当前的样式值即color: #e6a23c作为隐式起点。配合默认的ease时间函数与alternate方向文字在「渐隐 → 渐显」之间平滑往返形成柔和的呼吸式闪烁。这种「只写终点、起点取当前样式」的写法也让同一个关键帧可以复用在不同颜色的元素上。四、源码佐证仓库中同名关键帧的真实存在上述两组关键帧并非只在文档演示中存在。在仓库的全局样式 assets/index.css 中同样定义了一模一样的blink-normal与blink-alternate/* blink */ keyframes blink-normal { 50% { color: transparent; } } keyframes blink-alternate { to { color: transparent; } }从源码结构可以推断该仓库采用 docsify 静态文档站点方案配置见 libs/index.js每个.md文件即一个文档页而blink属于侧边栏 _sidebar.md「Transition Animations动画过渡」分组中的一员同时 index.html 的 keywords 元信息中也把blink与「闪烁效果」列为站点关键词。全局样式中重复维护这两组关键帧进一步印证了「闪烁效果」是仓库中稳定沉淀、可被其他页面复用的公共动画片段。五、浏览器支持animation-direction属于 CSS Animation 标准特性。原文档在「浏览器支持」小节内嵌入了 caniuse 针对css-animation的兼容性数据覆盖未来、当前以及过去三个版本周期的数据便于读者在真实浏览器环境中即时核验。总体上CSS 动画在现代桌面与移动浏览器中均已得到广泛原生支持如果你需要精确到某个浏览器版本的具体支持情况可在当前仓库的在线演示页面中直接查看该内嵌数据。六、实战建议闪烁效果的正确打开方式1. 用闪烁传达语义而非单纯装饰文档演示将三种闪烁分别赋予 info、warning、error 三级语义普通频率闪烁适合「有新的提示到来」这类低干扰场景快速交替闪烁则天然适合「需要立即关注」的告警场景。在设计时建议让闪烁节奏与信息紧急程度成正比并保证静止状态下文字依然可读。2. 一切的过渡皆应该由动画来完成原文档在演示末尾特别强调了一句话「一切的过渡皆应该由动画来完成」。这是贯穿整个仓库的交互设计理念——当元素的状态发生变化颜色、位置、透明度等时应当通过transition或animation平滑呈现而不是让状态瞬间跳变从而提升用户对界面变化的感知与理解。3. 关注可访问性闪烁本质上是一种高频状态变化部分用户尤其是对视觉刺激敏感的用户可能因此感到不适。在正式产品中引入闪烁动画时业界通行做法是为动画提供关闭开关或借助prefers-reduced-motion媒体查询在用户开启「减少动态效果」系统设置时自动降级为静态样式同时避免大范围、高亮度的整体闪烁。此外文档演示采用的是「文字颜色在color与transparent之间切换」的实现若用于承载关键信息建议同时配合visibility/opacity或图标等非颜色信号避免仅靠颜色传递状态。4. 三种节奏对应三种选型需要「明确的一亮一灭、节奏可控」——用blink-normalstep-endnormal默认方向需要「柔和的渐变呼吸、循环无缝衔接」——用只写终点的关键帧 alternate需要「两组元素此消彼长的错位交替」——分别使用alternate与alternate-reverse即可利用相位差制造交替闪烁。七、延伸阅读闪烁效果是仓库「动画过渡」章节中的一环该分组下还有更多可复用的动画技巧同样配有可交互演示适合顺藤摸瓜继续深入打字效果Typing基于steps()与ch单位的字符逐个输出动画弹跳效果Bounce 与 弹性过渡Elastic基于cubic-bezier与关键帧的弹性动画抖动效果Shake位移关键帧的抖动动画无缝平滑效果Smooth 与 延轨迹平滑效果Circular smooth平滑运动相关技巧。若想在本地查看全部演示可按照 README.md 中 Quick start 一节的方式安装 docsify-cli 后在仓库目录运行docsify serve然后通过浏览器访问http://localhost:3000即可逐页体验每个技巧的实时效果。赞分享前端文档教程【免费下载链接】You-need-to-know-cssCSS tricks for web developers~项目地址https://gitcode.com/gh_mirrors/yo/You-need-to-know-css点击查看免费下载相关推荐You-need-to-know-css 切角效果实战四种 CSS 切角方案渐变 / 内联 SVG / clip-path深度解析You need to know css 切角效果实战四种 CSS 切角方案渐变 / 内联 SVG / clip path深度解析 本篇指南围绕 You前端文档教程3DDFA核心功能深度解析从人脸对齐到3D重建的完整流程3DDFA核心功能深度解析从人脸对齐到3D重建的完整流程 3DDFA3D Dense Face Alignment是一个基于PyTorch改进的开源项目7个You-need-to-know-css最佳实践从DRY原则到过渡效果优化7个You need to know css最佳实践从DRY原则到过渡效果优化 作为前端开发者掌握CSS最佳实践是提升代码质量和开发效率的关键。You ne前端文档教程上一篇突破PHP执行时限PHPUnit-Invoker完全指南与实战解决方案下一篇【亲测免费】 ZenTao项目常见问题解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

AWS SDK for Go v2 DynamoDB 服务客户端演进全解:从版本历史到 Cortex 落地实践

AWS SDK for Go v2 DynamoDB 服务客户端演进全解:从版本历史到 Cortex 落地实践

可观测性时序数据库后端指标监控 【免费下载链接】cortex A horizontally scalable, highly available, multi-tenant, long term Prometheus. 项目地址: https://gitcode.com/gh_mirrors/cortex6/cortex 点击查看 免费下载 导读 本文以当前仓库 vendor/github.co…

📅 2026/10/12 1:22:28
2019大数据机器学习教学实践:从答案文档反推工程闭环

2019大数据机器学习教学实践:从答案文档反推工程闭环

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/12 1:22:28
高校运动会管理系统数据库设计:从ER图到MySQL完整实现

高校运动会管理系统数据库设计:从ER图到MySQL完整实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/12 1:22:28
MORE NEWS

更多资讯

📰

Sherpa-onnx 跑 Zipformer ONNX 推理:3 步绕开 Required inputs missing

Sherpa-onnx 跑 Zipformer ONNX 推理:3 步绕开 Required inputs missing 【免费下载链接】sherpa-onnx Speech-to-text, text-to-speech, speaker diarization, speech enhancement, source separation, and VAD using next-gen Kaldi with onnxruntime without Int…

📰

AI日报制作全流程:从信源分层到自动化抓取与人工筛选

1. 一份AI日报的诞生逻辑:为什么值得认真做每天早上八点半,我会准时把一份AI日报推到几个内部群里。这个习惯坚持了快两年,从最开始只有三五条链接的粗糙拼凑,到现在固定包含模型动态、产品更新、行业资本、开源社区、论文速递五个…

📰

.NET接入钉钉开放平台实战:从Token缓存到事件订阅

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

fpinscala 第 11 章练习 20 解答:从零实现只读环境 Reader Monad

示例工程 【免费下载链接】fpinscala Code, exercises, answers, and hints to go along with the book "Functional Programming in Scala" 项目地址: https://gitcode.com/gh_mirrors/fp/fpinscala 点击查看 免费下载 本篇技术指南以 fpinscala 仓库中…

📰

YOLO垃圾四分类数据集制作全指南:从标注到验收的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

XQuad 编译指南:读懂 `problem.compile()` 生成的 encoder / verifier / decoder 三份 XQASM

【免费下载链接】xquad A rust implementation of the Quip Networks quantum virtual machine. 项目地址: https://gitcode.com/gh_mirrors/xq/xquad 点击查看 免费下载 problem.compile() 是 XQuad 约束编程层(xqcp)的核心出口&#xff1a…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬