要实现无过渡的硬切换闪烁效果,需要使用 steps()
时间函数。代码如下:
#custom-cursor {
animation: ablink 1s steps(1) infinite; /* 关键修改在这里 */
}
@keyframes ablink {
0% { opacity: 1; }
50% { opacity: 0; } /* 添加中间关键帧 */
100% { opacity: 1; }
}
原理说明:
-
steps(1)
表示把动画分成 1 个跳跃步骤(即无过渡) -
配合关键帧修改为:
- 0% 完全显示
- 50% 完全隐藏
- 100% 完全显示
-
动画周期 1s 时实际效果:
- 0s-0.5s 显示
- 0.5s-1s 隐藏
- 循环往复
更简洁的版本(推荐):
#custom-cursor {
animation: ablink 1s steps(2, jump-none) infinite;
}
@keyframes ablink {
from { opacity: 1; }
to { opacity: 0; }
}
这里 steps(2, jump-none)
表示:
- 把动画分成 2 个等分
-
jump-none
表示在 0% 和 50% 时间点突变 - 最终效果:每 0.5s 切换一次状态(显示/隐藏)
参数调节技巧:
- 调整总时间(如
0.8s
)可改变闪烁速度 - 使用
steps(2)
等效于step-start
的精确控制版 - 删除动画时不会残留中间状态
这是最接近传统光标效果的实现方案,可实现无过渡的硬切换闪烁。
