css 实现光标闪烁效果

要实现无过渡的硬切换闪烁效果,需要使用 steps()​ 时间函数。代码如下:

#custom-cursor {
  animation: ablink 1s steps(1) infinite; /* 关键修改在这里 */
}
@keyframes ablink {
  0% { opacity: 1; }
  50% { opacity: 0; } /* 添加中间关键帧 */
  100% { opacity: 1; }
}

原理说明:

  1. steps(1)​ 表示把动画分成 1 个跳跃步骤(即无过渡)

  2. 配合关键帧修改为:

    • 0% 完全显示
    • 50% 完全隐藏
    • 100% 完全显示
  3. 动画周期 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​ 的精确控制版
  • 删除动画时不会残留中间状态

这是最接近传统光标效果的实现方案,可实现无过渡的硬切换闪烁。

image.png

留下你的脚步
推荐阅读