1. 程式人生 > >JQ實現無縫滾動

JQ實現無縫滾動

<script type="text/javascript">
    var timer = 0; //定時器初始化
    var index = 0; //圖片索引值
    var left = 714;//圖片的寬度
    var $len = $(".box>li").size();//圖片的數量
    
    function autoImg(){
        clearInterval(timer);//開啟一個新的計時器前需要清空之前的計時器
        timer = setInterval(function(){//開啟計時器
            index ++;//切換下一張圖片
            tab();
        },2000);
    }
    autoImg();//呼叫計時器
    
    $(".left").click(function(){//給左按鈕新增點選事件
        index --;//往左走圖片的索引值是變小的
        tabImg();//實現輪播
        autoImg();//開啟計時器
    });
    $(".right").click(function(){//給右按鈕新增點選事件
        index ++;//往左右走圖片的索引值是變大的
        tab();//實現輪播
        autoImg();//開啟計時器
    });
    $(".many_btn a").click(function(){//給下面按鈕新增點選事件
        clearInterval(timer);//開啟一個新的計時器前需要清空之前的計時器
        index = $(this).index();//將當前按鈕的索引賦值給index
        $(".box").stop().animate({left: - index * left},0);//通過獲取的索引來算出left值
        $(".many_btn a").eq(index).addClass("active").siblings().removeClass("active");//使當前下面的索引背景隨著圖片滾動變色
        autoImg();//開啟計時器
    });
    
    function tab(){//輪播函式
        if(index > $len - 1){//當運動到最後一張圖片
            $(".box").stop().animate({left:0},0,function(){//用0秒跳轉到第一張圖片後繼續運動
                index = 1//讓索引變為1,目的是剛跳轉到第一張圖片立即運動第二張圖片,實現無縫滾動
                $(".box").stop().animate({left:-index*left},500);
            });
        }else{
            $(".box").stop().animate({left:-index*left},500);//每隔500毫秒left值減一張圖片的寬度,也就是顯示出下一張圖片
        }
        $(".many_btn a").eq(index).addClass("active").siblings().removeClass("active");//使當前下面的索引背景隨著圖片滾動變色
    }
    
    function tabImg(){
        if(index < 0){//當從第一張圖到前一張圖
            $(".box").stop().animate({left:- ($len - 1) * left},0,function(){//立刻跳轉到最後一張圖
                index = $len - 2;////讓索引變為倒數第二張,目的是剛跳轉到最後一張圖片立即運動到倒數第二張圖片,實現無縫滾動
                $(".box").stop().animate({left:- index * left},500);
            });
        }else{
            $(".box").stop().animate({left: - index * left},500);//每隔500毫秒left值減一張圖片的寬度,也就是顯示出下一張圖片
        }
        $(".many_btn a").eq(index).addClass("active").siblings().removeClass("active");//使當前下面的索引背景隨著圖片滾動變色
    }
</script>