我希望使用jquery / javascript实现以下动画。我的图像宽度为2000像素,高度为200像素。我想从左到右动画图像,直到它到达一端然后从右到左。这应该继续提供全景视图。
我在互联网上尝试了[以下脚本] [1],但它只是在一边。我想要像平移效果这样的东西。 好心劝告。谢谢
;(function(){
$.fn.autoBackgroundScroll = function(options) {
var opts = $.extend({}, $.fn.autoBackgroundScroll.defaults, options);
var $backslider = $(this);
var duration = opts.duration;
var speed = opts.speed;
var imageWidth = opts.imageWidth;
var imageHeight = opts.imageHeight;
var direction1 = opts.direction1;
var direction2 = opts.direction2;
var posX = 0;
var posY = 0;
scroll(duration, speed, direction1, direction2);
function scroll(duration, speed, direction1, direction2){
setInterval(function(){
if(direction1 == 'right'){
moveRight();
if(direction2 == 'top'){
moveTop();
}
if(direction2 == 'bottom'){
moveBottom();
}
} else if(direction1 == 'left'){
moveLeft();
if(direction2 == 'top'){
moveTop();
}
if(direction2 == 'bottom'){
moveBottom();
}
} else if(direction1 == 'bottom'){
moveBottom();
if(direction2 == 'right'){
moveRight();
}
if(direction2 == 'left'){
moveLeft();
}
} else if(direction1 == 'top'){
moveTop();
if(direction2 == 'right'){
moveRight();
}
if(direction2 == 'left'){
moveLeft();
}
}
$backslider.css('background-position', posX + 'px ' + posY + 'px');
function moveTop(){
if(posY <= -imageHeight){
posY = 0;
}
posY -= speed;
}
function moveRight(){
if(posX >= imageWidth){
posX = 0;
}
posX += speed;
}
function moveBottom(){
if(posY >= imageHeight){
posY = 0;
}
posY += speed;
}
function moveLeft(){
if(posX <= -imageWidth){
posX = 0;
}
posX -= speed;
}
}, duration);
}
}
$.fn.autoBackgroundScroll.defaults = {
direction1: 'right',
direction2: '',
duration: 1,
speed: 0.5
};
})(jQuery);
答案 0 :(得分:0)
简单的jQuery动画为x和y设置正确的data-content
值(我建议使用CSS过渡以获得更流畅的动画):
onLoadPopoverFunction
background-position
$(document).ready(function() {
slide();
setInterval(function() {
slide();
}, 10000);
});
function slide() {
$('body').css({
'background-position': -2000 + $(window).width() + 'px 0'
});
setTimeout(function() {
$('body').css({
'background-position': '0 0'
});
}, 5000);
}
答案 1 :(得分:0)
我建议使用CSS动画
.bg {
background-image: url("https://dummyimage.com/1000x200/333/ccc.png");
background-position-x: 50%;
animation-delay: 0s;
animation-duration: 10s;
animation-name: panoramic;
animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
animation-fill-mode: both;
width: 444px;
height: 200px;
overflow: hidden;
margin: 0 auto;
border: 1px solid gold;
will-change: background-position-x;
}
@keyframes panoramic {
0% {
background-position-x: 0%;
}
50% {
background-position-x: 100%;
}
100% {
background-position-x: 0%;
}
}
<div class="bg"></div>