为什么这不能动画?

时间:2014-02-04 09:29:02

标签: jquery css animation

$( document ).ready(function() {
$('.overlay-1').css({backgroundPosition:'30% 100%'});

var to;

function infinite(){
to = setTimeout(function(){
$('.overlay-1').animate({backgroundPosition:"30% 2000%"},12000,function(){
    $('.overlay-1').css({backgroundPosition:'30% 100%'});
  infinite();
    });    
  });
}
infinite();


});

为什么无法为背景图像设置动画?它意味着一个无休止的滚动背景图像,但没有任何东西在移动?

干杯, 萨姆

2 个答案:

答案 0 :(得分:1)

你需要在你的动画函数中使用单独的背景位置,jquery不能像这样处理多个css参数。例如:

$('.overlay-1').animate({
    'background-position-x': '30%',  
    'background-position-y': '2000%'},12000, function(){});

编辑:刚认为这在FF中不起作用。尝试这个为Firefox: jquery animate background-position firefox

答案 1 :(得分:0)

您可以使用CSS3动画。请注意,并非所有浏览器都支持它。您可以在此处查看浏览器采用情况:http://caniuse.com/css-animation

对于像IE9这样的浏览器,您可以使用静态图片来逐渐降低旧浏览器的用户体验。

我写了一个关于如何使用CSS动画背景位置的小例子,我将谷歌徽标从上到下无限循环作为背景图像:http://jsfiddle.net/xMMct/

在您的情况下,您可以将背景图像定位为无限滚动。

Css代码:

.background {
    background-image: url(https://www.google.nl/images/srpr/logo11w.png);
    width: 200px;
    height: 500px;
    background-size: 200px auto;
    background-repeat: no-repeat;
    background-position: 0% -20%;
    animation:bg 5s linear infinite;
    -webkit-animation:bg 5s linear infinite;
}

@keyframes bg
{
   from {background-position: 0% -20%;}
   to {background-position: 0% 120%;}
}

@-webkit-keyframes bg /* Safari and Chrome */
{
   from {background-position: 0% -20%;}
   to {background-position: 0% 120%;}
}

这是另一个小提琴,背景似乎无休止地滚动(请原谅每5秒跳一次,值不完美)http://jsfiddle.net/xMMct/1/

修改:更好的示例(没有跳过)http://jsfiddle.net/xMMct/2/