hover时连续的CSS旋转animation,hover在0deg上的animation
当你无限期地hover在它上面时,我有一个元素会旋转。 当你hover,animation停止。 简单:
@-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; }
但是,当你hover时,animation突然停止,回到0度。 我想回到那个位置,但是在编写语法时遇到一些麻烦。
任何input将是真棒!
解决方法是在您的.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>
这是一个简单的工作解决scheme:
@-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; }
它花了几次尝试,但我能让你的jsFiddle工作(仅用于Webkit)。
当用户重新inputdiv时,animation速度仍然存在问题。
基本上,只需将当前的旋转值设置为一个variables,然后对该值进行一些计算(以转换为度数),然后将该值设置回鼠标移动时的元素并进入鼠标。
看看jsFiddle: http : //jsfiddle.net/4Vz63/46/
查看本文以获取更多信息,包括如何添加跨浏览器兼容性: http : //css-tricks.com/get-value-of-css-rotation-through-javascript/
你应该触发animation,一旦它完成W / JavaScript恢复。
$(".item").live("animationend webkitAnimationEnd", function(){ $(this).removeClass('animate'); });
这是一个JavaScript实现,可与web-kit一起使用:
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。
<script> var deg = 0 function rotate(id) { deg = deg+45; var txt = 'rotate('+deg+'deg)'; $('#'+id).css('-webkit-transform',txt); } </script>
我所做的事情是非常简单的…在开始的时候声明一个全局variables,然后增加variables,然后使用jQuery的.css来递增。