jquery 使一组图像在屏幕上移动,然后当离开窗口时,它从另一边出现

mhd8tkvw  于 2023-05-06  发布在  jQuery
关注(0)|答案(2)|浏览(130)

我试图在jQuery中实现marquee tag,通过使用animate()函数动画一组图像,使它们向右或向左移动。
但是,我不知道什么时候一个单一的图像去到屏幕的末端单独返回到另一边。
因为我听说每个浏览器的窗口大小不是恒定的,所以有没有办法实现?
这就是我到目前为止所做的(简单而基本):

$(document).ready(function(){
    moveThumbs(500);
    function moveThumbs(speed){
        $('.thumbnails').animate({
            right:"+=150"
        }, speed);
        setTimeout(moveThumbs, speed);
    }

});

:我在SO中搜索了相关问题,但没有找到我的具体问题的确切信息。

afdcj2ne

afdcj2ne1#

这里有一个基本的脚本,它在屏幕上移动图像,然后在另一边恢复并适应窗口宽度。
你可以看到它在这里工作:http://jsfiddle.net/jfriend00/rnWa2/

function startMoving(img) {
    var img$ = $(img);
    var imgWidth = img$.width();
    var screenWidth = $(window).width();
    var amount = screenWidth - (parseInt(img$.css("left"), 10) || 0);
    // if already past right edge, reset to 
    // just left of left edge
    if (amount <=0 ) {
        img$.css("left", -imgWidth);
        amount = screenWidth + imgWidth;
    }
    var moveRate = 300;   // pixels per second to move
    var time = amount * 1000 / moveRate;
    img$.stop(true)
        .animate({left: "+=" + amount}, time, "linear", function() {
            // when animation finishes, start over
            startMoving(this);
        })
}

$(document).ready(function() {
    // readjust if window changes size
    $(window).resize(function() {
        $(".mover").each(function() {
            startMoving(this);
        });
    });
});
iecba09b

iecba09b2#

我曾试图淡入元素,并在最后淡出元素,但不幸的是我失败了。如何做到这一点?

.animate({right: "+=" + amount}, time, "linear", function() {
        img$.delay(3000).fadeOut();
        startMoving(this);
    })
img$.fadeIn(3000);

}

相关问题