【问题标题】:Webkit Keyframes on Hover - Prevent Previous Animation悬停时的 Webkit 关键帧 - 阻止以前的动画
【发布时间】:2012-11-08 06:14:58
【问题描述】:

我有一个元素,我有一组 @-webkit-keyframes 来制作动画。在页面加载时,这些关键帧会运行,并且介绍看起来很棒。

接下来,我在悬停时设置了第二组@-webkit-keyframes 并设置为重复,所以在悬停时,该元素具有循环动画。这也很好用。

但是,当我将鼠标从元素上移开时,第一组(介绍)关键帧就会再次运行。我不希望它在第一次运行后运行。有没有一种简单的方法可以在 CSS 中防止这种情况发生?

我所拥有的最小示例

#e { -webkit-animation: fadeIn 1s ease-out 0.5s; } /* Fades in on load, BUT gets called when mouse moves away as well */
#e:hover { -webkit-animation: pulse 1s ease-in-out 0s infinite alternate; } /* Works fine, pulses on hover */

另外,拥有 1500+ 声望的人可以编辑标签并添加 webkit-animation 标签吗?我不敢相信它还没有被创建……:\

【问题讨论】:

  • 你去。这也是一个很常见的话题。
  • 尝试使用过渡而不是动画。

标签: html css webkit css-animations webkit-animation


【解决方案1】:

没有纯粹的 CSS 方法可以满足您的需求。您可以将动画添加到父元素或包装器并分别为每个元素设置动画:

.wrapper {
    -webkit-animation: fadeIn .5s ease-out 0 1;
}
#e { 
    width: 100px;
    height: 100px;
    background-color: #000;
}
#e:hover { 
    -webkit-animation: pulse 100ms ease-in-out 0s infinite alternate; 
} 
@-webkit-keyframes fadeIn {
        0%   { opacity: 0; }
        100% { opacity: 0.5;}
}

@-webkit-keyframes pulse {
        0%   { background-color: #000; }
        100% { background-color: #c00; }
}

http://jsfiddle.net/3PuT2/

【讨论】:

  • 谢谢。这有点令人失望,纯 CSS 是不可能的,但效果很好。需要注意的一件事是,我需要使用-webkit-transform-style: preserve-3d; 以使其看起来正确(我使用 3d 变换和透视)。
猜你喜欢
  • 2018-03-09
  • 2015-04-05
  • 2023-02-16
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
相关资源
最近更新 更多