为了使其平滑,将图像放在单独的 div 上并使用 transform: translate 移动整个元素 - 然后您将获得非常平滑的结果。
这是一个小例子,做一些不同的事情,但使用 translate 来给你这个想法:
HTML:
<div id="wrapper">
<div id="content">Foreground content</div>
</div>
CSS:
@-webkit-keyframes MOVE-BG {
0% {
transform: translate(0%, 0%);
-webkit-transform: translate(0%, 0%);
}
50% {
transform: translate(-250px, 0%);
-webkit-transform: translate(-250px, 0%);
}
100% {
transform: translate(0%, 0%);
-webkit-transform: translate(0%, 0%);
}
}
#wrapper {
width: 300px;
height: 368px;
overflow: hidden;
}
#content {
width: 550px;
height: 368px;
background: url(http://www.gstatic.com/webp/gallery/1.jpg) 0% 0% repeat;
text-align: center;
font-size: 26px;
color: #000;
-webkit-animation-name: MOVE-BG;
-webkit-animation-duration: 10s;
-webkit-animation-timing-function: linear;
-webkit-animation-iteration-count: infinite;
}
和小提琴:http: //jsfiddle.net/piotku/kbqsLjfL/
从javascript(使用jQuery)中,您必须使用类似的东西:
$(".element").css("transform", 'translateY(' + ($(this).scrollTop() / 2) + 'px)');
或在 vanillaJS 中:
backgroundElement.style.transform = 'translateY(' + ($(this).scrollTop() / 2) + 'px)';