2015-03-19 113 views
1

不工作我创建使用PNG精灵序列,这将对悬停过渡动画,动画和回悬停状态结束时。CSS过渡在Mozilla

http://jsfiddle.net/MLWL5/6/

$("div").hover(
 
     function() { 
 
      var elem = $(this); 
 
      var cur = parseInt(elem.css("background-position-x")); 
 
      var steps = (450 + cur)/50; 
 
      var time = steps * 0.1; 
 
      var trans = "background " + time + "s steps(" + steps + ", end)"; 
 
      elem.css("transition", trans); 
 
      elem.css("background-position", "-450px 0px"); 
 
     }, 
 
     function() { 
 
      var elem = $(this); 
 
      var cur = parseInt(elem.css("background-position-x")); 
 
      var steps = - cur/50; 
 
      var time = steps * 0.1; 
 
      var trans = "background " + time + "s steps(" + steps + ", end)"; 
 
      elem.css("transition", trans); 
 
      elem.css("background-position", "0px 0px"); 
 
     } 
 
    );
div { width:50px; 
 
    height:72px;    background:url(http://openbookproject.net/thinkcs/python/english3e/_images/duke_spritesheet.png) left top; 
 
}
<div></div>

我已经使用图像精灵和jQuery开发矿山,这是在Chrome浏览器工作正常,但在Mozilla不动画好。

Mozilla未执行转换。它跳到最后的状态。

+0

可以张贴代码 – atmd 2015-03-19 09:47:43

+2

请不要试图绕过SO规则。链接到jsfiddle必须附有本网站上的代码 – Pete 2015-03-19 09:54:25

+0

您应该看看'transition-easing-function:steps;'(https://developer.mozilla.org/en-US/docs/Web/CSS/定时函数#The_steps()_ class_of_timing-functions),因为它可能会简化您的代码。 – somethinghere 2015-03-19 10:27:41

回答

0

Firefox不支持background-position-x,据我所知。改为使用background-position,这将起作用。

0

您可以通过空间得到background-positionsplit()它来得到它的x值。然后按照您在函数中所做的来计算其余部分。

更新jsFiddle link

也,代码是

$("div").hover(
 
     function() { 
 
      var elem = $(this); 
 
      var cur = parseInt(elem.css("background-position").split(" ")[0]); 
 
      var steps = (450 + cur)/50; 
 
      var time = steps * 0.1; 
 
      var trans = "background " + time + "s steps(" + steps + ", end)"; 
 
      elem.css("transition", trans); 
 
      elem.css("background-position", "-450px 0px"); 
 
     }, 
 
     function() { 
 
      var elem = $(this); 
 
      var cur = parseInt(elem.css("background-position").split(" ")[0]); 
 
      var steps = - cur/50; 
 
      var time = steps * 0.1; 
 
      var trans = "background " + time + "s steps(" + steps + ", end)"; 
 
      elem.css("transition", trans); 
 
      elem.css("background-position", "0px 0px"); 
 
     } 
 
    );
div { width:50px; 
 
    height:72px;    background:url(http://openbookproject.net/thinkcs/python/english3e/_images/duke_spritesheet.png) left top; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<div></div>

希望这有助于