【问题标题】:jquery animation from right to leftjquery动画从右到左
【发布时间】:2012-04-17 10:37:11
【问题描述】:

我正在尝试使用 css sprites 制作动画(请告诉我我的方法是否正确),请检查以下 jquery 代码...

$(document).ready(function() {
    setTimeout("boat()",20);
});
function boat(){
    $("#boat").animate({right:"+=110%"},20000).css("background-position","0 0").animate({left:"+=110%"},20000).css("background-position","0 -68px")
    setTimeout("boat()",20000);
}

css:

#boat {
    margin-top:160px;
    position:absolute;
    margin-left:100%;
    width:150px;
    height:68px;
    background-image:url(plane.png);
    background-repeat:no-repeat;
}

动画效果完美(从右到左,从左到右),但有一个小问题,css sprite 没有按预期工作。它只占用这个属性.css("background-position","0 -68px")

【问题讨论】:

  • left:"+=110%" 在我看来是错误的
  • @gdoron 那应该是什么?
  • 嗨,这对你有帮助吗? jsfiddle.net/5dqwP/1 告诉我,如果有帮助,我可以将其设置为答案!干杯!
  • 您需要将 css 包含在 .animate() api 中。即.animate({ right: "+=110%", background-position: "0 0" });。我不确定它是否适用于背景位置。
  • @seoppc- 看起来应该是left: "-=100%"

标签: jquery right-to-left


【解决方案1】:

这是因为您将所有内容都应用到一个中。 .css("背景位置","0 0") 和 .css("背景位置","0 -68px") 你想达到什么目标?动画结束不应该是回调吗?

试试这个:

 $(document).ready(function() {
    boat();
});
function boat(){
    $("#boat").css("background-position","0px 0px").animate({right:"+=110%"},10000, function() {
        $("#boat").css("background-position","0px -68px").animate({right:"-=110%"},10000, boat);
    });
}

你可以在这里查看:http://jsfiddle.net/7GV9G/20/

这将是连续的。从右到左比从左到右再比一次,永远循环。如果您不想只使用一次,请从第二个动画中删除船回调。

【讨论】:

  • 是的,这就是为什么我需要你的帮助。我正在尝试从右到左和从左到右对其进行动画处理
  • 谢谢,你能告诉我们怎样才能使这个动画流畅吗?
  • 成功运行后它没有停止(从右到左和从左到右),我们如何在鼠标悬停时停止动画?
  • 你的意思是动画的缓动应该是线性的而不是摇摆的?像这样: ... .animate({right:"+=110%"},10000, 'linear', function() { ...
  • 你想停止,还是暂停而不是恢复动画?
【解决方案2】:

您好,正如您在上面提到的发布我的答案 :) 看到这个:http://jsfiddle.net/UzLxZ/9/show/ && 代码在这里:http://jsfiddle.net/UzLxZ/9/ && 我之前的启动是这样的:http://jsfiddle.net/5dqwP/1/

这是另一个版本,你完全需要http://jsfiddle.net/UzLxZ/20/show/(等待蓝色框离开屏幕然后回来) http://jsfiddle.net/UzLxZ/21/show/ && 代码在http://jsfiddle.net/UzLxZ/20 这里;你可以到处玩,让它漂亮。 :)

进一步修改

http://jsfiddle.net/8sVDE/ - 这可能会给你更多的想法。

** http://archive.plugins.jquery.com/project/Pause-Resume-animation 要么 ** The way to stop and continue animation while mouseover and mouseout in JQuery

确切地知道您在寻找什么。

希望这会有所帮助:(将鼠标悬停在蓝色框上,您将获得完整的重复)

所以,这个 jsfiddle 准确地向您展示了您想要的内容,即 引用 - “我想暂停然后在鼠标悬停时恢复并在 1 次成功运行后停止(意味着完成全部功能,从右到左,从左到对)"

如果这有帮助,请告诉我,祝你愉快,干杯!

jQuery 代码

$(document).ready(function() {
    boat();
});
function boat(){
    $("#boat").css("background-position","0px 0px").animate({right:"+=100%"},1000, function() {
        $("#boat").css("background-position","0px -68px").animate({right:"-=100%"},1000).stop();
    });
   // alert('foo');
}



$("#boat").mouseover(function(){
   boat(); 

});
​

【讨论】:

  • 感谢您的回答。如何在鼠标悬停时暂停并在鼠标悬停时再次播放?
  • @seoppc 是的,给我 2 分钟!欢呼 :) 但是 lil 澄清 - 你的意思是暂停,即停在你鼠标悬停的位置?或停止,即返回到重复循环的原始位置
  • @seoppc 还要确认您在开始时仍然只需要一个重复周期吗?以及鼠标悬停和移出的后一种功能?早些时候您希望它在 鼠标悬停 上重新开始 :) 如果您能澄清这一点,那就太好了 - 我也许可以帮助您,干杯!
  • 是的,停在我们鼠标悬停的位置。甚至请建议我是否应该使用 jquery easing 来实现流畅的动画?
  • @seoppc 您可以使用 .slide 功能,并且在鼠标悬停时您可以停止它并且鼠标移出时重新开始,几天前我帮助了某人,我会看看我是否能找到答案。干杯:) 使用 pauseAnimation 插件等待会给你详细信息!
猜你喜欢
  • 2019-09-04
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
相关资源
最近更新 更多