使用JQuery / CSS在整个页面上滑动Div

时间:2019-02-13 16:17:26

标签: javascript html jquery-animate slide

我使用了以下代码,每次单击div时,该动画都会动画并在页面上移动,从而在页面后移动下一个。

http://jsfiddle.net/jtbowden/ykbgT/2/

但是,我正在尝试制作它,以便它每3秒自动滚动一次而无需单击。我已经尝试过使用计时器对javascript进行以下调整,但它似乎只是闪烁而不能正确滚动:

<script>

    $('.box').click(function () {

        $(this).animate({
            left: '-50%'
        }, 500, function () {
            $(this).css('left', '150%');
            $(this).appendTo('#container');
        });

        $(this).next().animate({
            left: '50%'
        }, 500);
    });

    $(document).ready(function ()
    {

        setInterval(function ()
        {

            $('.box').click();
            console.log("BOX CLICKED.");

        }, 3000);

    });


</script>

有人有什么想法吗?

谢谢

2 个答案:

答案 0 :(得分:1)

类似于Zack的回答(但更简单,恕我直言),我发现以下内容对您有效

id = 1

setInterval(function(){
    $('#box' + id).animate({
        left: '-50%'
    }, 500, function() {
        $(this).css('left', '150%');
        $(this).appendTo('#container');
    });

    $('#box' + id).next().animate({
        left: '50%'
    }, 500);

    id = id <= 5 ? id + 1 : 1;
},4000)

答案 1 :(得分:0)

使用以下调整将其排序:

<script>

    ActiveDashboards = {};
    ActiveDashboards["Projects"] = true;
    ActiveDashboards["SHEQs"] = false;
    ActiveDashboards["HR"] = false;

    function ShowNextDashboard()
    {

        if (ActiveDashboards["Projects"] == true)
        {
            //Hide this one.
            $('#box1').animate({
                left: '-50%'
            }, 500, function () {
                $('#box1').css('left', '150%');
                $('#box1').appendTo('#container');
            });


            //Show SHEQs one.
            $('#box2').animate({
                left: '50%'
            }, 500);

            ActiveDashboards["Projects"] = false;
            ActiveDashboards["SHEQs"] = true;

        }
        else if (ActiveDashboards["SHEQs"] == true)
        {

            //Hide this one.
            $('#box2').animate({
                left: '-50%'
            }, 500, function () {
                $('#box2').css('left', '150%');
                $('#box2').appendTo('#container');
            });


            //Show HR one.
            $('#box3').animate({
                left: '50%'
            }, 500);

            ActiveDashboards["SHEQs"] = false;
            ActiveDashboards["HR"] = true;

        }
        else if (ActiveDashboards["HR"] == true)
        {

            //Hide this one.
            $('#box3').animate({
                left: '-50%'
            }, 500, function () {
                $('#box3').css('left', '150%');
                $('#box3').appendTo('#container');
            });


            //Show Projects one.
            $('#box1').animate({
                left: '50%'
            }, 500);

            ActiveDashboards["HR"] = false;
            ActiveDashboards["Projects"] = true;
        }  

    }


    $(document).ready(function ()
    {

        setInterval(function ()
        {

            ShowNextDashboard();

        }, 4000);

    });


</script>

可能是一种更好的方法,但是它工作正常并且可以滚动浏览每一个。