如何在没有动画中断的情况下连续水平滚动背景图像?

时间:2015-09-04 19:27:10

标签: html css css3 css-animations

我试图用css3动画制作横向无限滚动的横幅。问题是,在动画结束后,当它重新启动时会有严重的削减。我试图找出如何防止这种苛刻的动画。

我已将我的代码放在这里。



@keyframes slideleft {
from{background-position: right;}
to {background-position: left;}
}

@-webkit-keyframes slideleft {
from{background-position: right;}
to {background-position: left;}
}

#masthead {
background-image: url('http://static.communitytable.parade.com/wp-content/uploads/2014/06/dogs-in-world-cup-jerseys-ftr.jpg');
animation: slideleft 5s infinite ease-in-out;
-webkit-animation: slideleft 5s infinite ease-in-out;
width: 100%;
height: 1200px;
}

<div id="masthead"></div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:8)

Javascript可能是处理此问题的更好方法。虽然在CSS中,您可以重复背景图像并将背景位置和动画持续时间扩展到非常高的数字。这是fiddle

@keyframes slideleft {
  from { background-position: 0%; }
  to { background-position: 90000%; }
}

#masthead {
  background-repeat: repeat-x;
  ...
  animation: slideleft 600s infinite linear;
}

如果您使用的是jQuery,那将非常简单:

(function animateBG() {
    $('#masthead').animate({
        backgroundPosition: '+=5'
    }, 12, animateBG);
})();