【发布时间】:2016-02-23 02:31:40
【问题描述】:
我有一个在悬停时移动元素的 css 过渡和一个在悬停时旋转元素的动画。动画的延迟等于过渡持续时间,因此在过渡到正确位置后,动画开始。而且效果很好,但是,当我们关闭鼠标时,动画会停止,但不会向下过渡。
鼠标移开动画结束后,是否可以让它转回来?
您可以在此处查看示例:http://codepen.io/jhealey5/pen/zvXBxM
这里是简化代码:
div {
width: 200px;
height: 200px;
margin: 40px auto;
background-color: #b00;
position: relative;
&:hover {
span {
transform: translateY(-60px);
animation-name: rotate;
animation-duration: 1s;
animation-delay: .5s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
}
}
span {
position: absolute;
width: 20px;
height: 20px;
background-color: #fff;
bottom: 10px;
left: 0;
right: 0;
margin: auto;
transition: .5s;
}
@keyframes rotate {
from {
transform: translateY(-60px) rotate(0);
}
to {
transform: translateY(-60px) rotate(-90deg);
}
}
【问题讨论】:
-
我使用的是稍旧版本的 Chrome,它也不会在悬停时转换(动画效果很好)。
-
而且,我认为它在 Chrome 上不起作用的原因是动画和过渡都应用于同一个属性(如讨论的here)。我认为你最好同时使用动画本身。
-
或者,另一种选择是将
bottom用于transition,而animation仅用于rotate,如this snippet。我不确定这种方法是否适合您的需求。如果有,请告诉我,我会添加为答案。 -
干杯,我确实尝试将顶部属性与翻译分开设置动画,但是直到我将默认顶部设置为 0 时它才起作用。动画顶部不是理想的事情,但我也无法访问 dom 来包装它。至少现在工作:)
-
这是另一个已知问题。浏览器不会转换属性值,除非我们有 my answer here 中提到的初始值。如标题所示,该问题并非仅针对 Firefox。
标签: css animation css-animations