javascript - 悬停时暂时偏离 CSS 动画,然后恢复

标签 javascript html css css-animations

使用关键帧动画,对象的颜色在柔和的红色和蓝色之间循环。

  1. 当我将鼠标悬停在其上时,我希望动画暂停,并且颜色变为黄色。
  2. 当我离开时,它应该平滑地过渡回我悬停时的颜色,并且关键帧颜色动画应该从暂停的位置恢复。

最小的简单代码 (Codepen demo) :

#box {
  width: 100px;
  height: 100px;
  background-color: #ffcccc;
  animation: cycleColor 2s infinite linear;
  transition: background-color .2s;
}

#box:hover {
  animation-play-state: paused;
  background-color: yellow;
}

@keyframes cycleColor {
  0% {
    background-color: #ffcccc;
  }
  50% {
    background-color: #ccccff;
  }
}
<div id='box'></div>

这通常不起作用,可能是因为关键帧动画不允许临时更改,即使在暂停时也是如此。

相反,我可以完全删除悬停时的动画,但随后它无法从暂停的位置顺利恢复。

我也尝试过在悬停时添加和删除类,但这并没有解决这个问题。

有 CSS 或 JS 解决方案吗?

最佳答案

使用box-shadow创建额外的图层

#box {
  width: 100px;
  height: 100px;
  background-color: #ffcccc;
  animation: cycleColor 2s infinite linear;
  transition: box-shadow .2s;
}

#box:hover {
  animation-play-state: paused;
  box-shadow: 0 0 0 100vmax inset yellow;
}

@keyframes cycleColor {
  0% {
    background-color: #ffcccc;
  }
  50% {
    background-color: #ccccff;
  }
}
<div id='box'></div>

关于javascript - 悬停时暂时偏离 CSS 动画,然后恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73355602/

相关文章:

jquery - Nivo slider 将图像向下推

html - 添加类时div重叠

jquery - 如何在数据表的响应状态下检测最后一个可见列

javascript - Mysql 和 node async.waterfall

javascript - 使用 jquery 及其选项的 dropzone

javascript - 使鼠标坐标相对于 <canvas> 坐标

javascript - 将幻灯片图像限制为幻灯片容器的高度/宽度?

javascript - 在 Iframe 中获取一个元素并使用 java 脚本为其分配一个值

javascript - SSRS 从标准的内置界面自动导出为 PDF

php - 验证可能不存在的字段