当你无限期地悬停它时,我有一个旋转的元素。当您将鼠标悬停时,动画将停止。简单:
@-webkit-keyframes rotate {
from {
-webkit-transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
}
}
.elem:hover {
-webkit-animation-name: rotate;
-webkit-animation-duration: 1.5s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
}
当你徘徊时,动画突然停止,恢复到0度。我想动画回到那个位置,但是我在编写语法时遇到了一些麻烦。
任何输入都很棒!
答案 0 :(得分:78)
解决方案是在.elem中设置默认值。 但是这个annimation与-moz配合得很好,但还没有在-webkit中实现
看看我更新的小提琴: http://jsfiddle.net/DoubleYo/4Vz63/1648/
适用于Firefox但不适用于Chrome
.elem{
position: absolute;
top: 40px;
left: 40px;
width: 0;
height: 0;
border-style: solid;
border-width: 75px;
border-color: red blue green orange;
transition-property: transform;
transition-duration: 1s;
}
.elem:hover {
animation-name: rotate;
animation-duration: 2s;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
@keyframes rotate {
from {transform: rotate(0deg);}
to {transform: rotate(360deg);}
}
<div class="elem"></div>
答案 1 :(得分:16)
这是一个简单的工作解决方案:
@-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }
@-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }
@keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } }
.elem:hover {
-webkit-animation:spin 1.5s linear infinite;
-moz-animation:spin 1.5s linear infinite;
animation:spin 1.5s linear infinite;
}
答案 2 :(得分:1)
花了几次尝试,但我能够让你的jsFiddle工作(仅适用于Webkit)。
当用户重新输入div时,动画速度仍然存在问题。
基本上,只需将当前旋转值设置为变量,然后对该值进行一些计算(转换为度数),然后在鼠标移动和鼠标输入时将该值设置回元素。
查看jsFiddle:http://jsfiddle.net/4Vz63/46/
查看此文章以获取更多信息,包括如何添加跨浏览器兼容性: http://css-tricks.com/get-value-of-css-rotation-through-javascript/
答案 3 :(得分:1)
跨浏览器兼容的JS解决方案:
var e = document.getElementById('elem');
var spin = false;
var spinner = function(){
e.classList.toggle('running', spin);
if (spin) setTimeout(spinner, 2000);
}
e.onmouseover = function(){
spin = true;
spinner();
};
e.onmouseout = function(){
spin = false;
};
&#13;
body {
height:300px;
}
#elem {
position:absolute;
top:20%;
left:20%;
width:0;
height:0;
border-style: solid;
border-width: 75px;
border-color: red blue green orange;
border-radius: 75px;
}
#elem.running {
animation: spin 2s linear 0s infinite;
}
@keyframes spin {
100% { transform: rotate(360deg); }
}
&#13;
<div id="elem"></div>
&#13;
答案 4 :(得分:0)
这是一个与web-kit一起使用的javascript实现:
var isHovering = false;
var el = $(".elem").mouseover(function(){
isHovering = true;
spin();
}).mouseout(function(){
isHovering = false;
});
var spin = function(){
if(isHovering){
el.removeClass("spin");
setTimeout(function(){
el.addClass("spin");
setTimeout(spin, 1500);
}, 0);
}
};
spin();
JSFiddle:http://jsfiddle.net/4Vz63/161/
BARF。
答案 5 :(得分:-1)
一旦完成w / javascript,你应该触发动画恢复。
$(".item").live("animationend webkitAnimationEnd", function(){
$(this).removeClass('animate');
});
答案 6 :(得分:-1)
<script>
var deg = 0
function rotate(id)
{
deg = deg+45;
var txt = 'rotate('+deg+'deg)';
$('#'+id).css('-webkit-transform',txt);
}
</script>
我所做的事情非常简单......在开始时声明一个全局变量...然后按照我喜欢的方式递增变量,并使用jquery的.css来增加。