呼吸灯效果通过opacity在0.3~1间循环变化实现,配合@keyframes breath定义三段式关键帧(0%/100%为0.3,50%为1),以3s ease-in-out infinite应用到图标元素,并可叠加scale微动、fill-opacity控制及animation-delay错峰提升真实感。
用 opacity 配合 @keyframes 实现 CSS 图标的呼吸灯效果,核心是让透明度在 0.3~1 之间平滑、循环变化,模拟“呼吸”节奏——缓慢变亮再缓慢变暗,避免突兀闪烁。
定义一个名为 breath 的关键帧动画,从低透明度开始,升到完全不透明,再缓降回低透明度,形成自然起伏:
@keyframes breath {
0%, 100% { opacity: 0.3; }
50% { opacity: 1; }
}
这里采用「两端低、中间高」的三段式结构,比线性来回更接近真实呼吸感。0% 和 100% 设为相同值,确保循环无缝衔接。
把动画绑定到图标容器(如 或 SVG 元素),设置持续时间、运动曲线和重复模式:
.icon-breath {
animation: breath 3s ease-in-out infinite;
}
linear
提升真实感与兼容性的小
技巧:
transform: scale(0.98) 在最低透明度点(0%/100%),最高点(50%)恢复 scale(1),模拟微弱胀缩fill-opacity(比全局 opacity 更精准控制颜色透明度)animation-delay: -0.5s 错开多个呼吸图标的时间起点,避免同频闪烁,适合仪表盘或多状态提示will-change: opacity 提升动画流畅度(尤其 iOS Safari)呼吸效果不是越明显越好。透明度范围建议控制在 0.2~1 或 0.4~0.95,避免完全隐去(影响可访问性)或全程高亮(失去呼吸感)。若图标本身有背景色,还需检查 contrast ratio 是否始终满足 WCAG 最低可读标准。
基本上就这些。不复杂但容易忽略节奏和缓动——调好那 3 秒和 ease-in-out,呼吸感就出来了。