我有一个css转换,可以在悬停时移动一个元素,也可以在悬停时旋转元素。动画的延迟等于转换时间,以便在转换到正确的位置后,动画开始。然而,它很好用,但是,当我们关闭鼠标时,动画会停止,但不会转换回来。动画结束后的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版本,它也不会在悬停时转换(动画效果很好)。 – Harry
而且,我认为它在Chrome上不起作用的原因是因为动画和转换都应用于相同的属性(如[在此讨论](http://stackoverflow.com/questions/33636375/css-keyframe-animation -breaks - 过渡时-两者-被施加-上相同属性/ 33652438#33652438))。我认为你最好同时使用动画本身。 – Harry
或者,另一种选择是将“bottom”用于“transition”和“animation”,仅用于[rotate],就像[this snippet]中一样(http://codepen.io/hari_shanx/pen/ojOLeX)。我不确定这种方法是否适合您的需求。让我知道如果它,我会添加为答案。 – Harry