商品左右循環切換的效果

說明:這個jquery我也是網上找的,感覺代碼很簡潔,比很多插件好多了。但是我研究了好久還是不太明白切換的原理是怎樣的,哎。記錄一下,下次用得到就可以參考參考。(我還自己加了個自動輪播的效果進去)類似下面這張效果

代碼如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="{CHARSET}">
        <title></title>
        <script type="text/javascript" src="js/jquery.min.js"></script>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            ul,li{
                list-style: none;
            }
            .scroll{
                margin: 40px auto;
                position: relative;
                width: 960px;
                height: 240px;
                overflow: hidden;
            }
            .scroll_box{
                width: 960px;
                height: 240px;
                overflow: hidden;
            }
            .scroll_ul{
                width: 2880px;
                height: 240px;
            }
            .scroll_ul .scroll_item{
                width: 960px;
                height: 240px;
                overflow: hidden;
                float: left;
            }
            .scroll_ul .scroll_item .item_box{
                width: 240px;
                height: 240px;
                background: orange;
                color: #fff;
                font-size: 24px;
                float: left;
                border: 1px solid red;
                box-sizing: border-box;
            }
            .scroll .btn{
                width: 32px;
                height: 60px;
                position: absolute;
                top: 90px;
            }
            .scroll .prev_btn{
                background: url(images/b_left.png);
                left: 0;
            }
            .scroll .next_btn{
                background: url(images/b_right.png);
                right: 0;
            }
        </style>
        <script type="text/javascript">
            $(function(){
                //點擊右按鈕
                $(".next_btn").click(function(){
                    nextscroll();
                });
                function nextscroll(){
                    //獲取放置所有切換內容的ul
                    var scrollUl = $(".scroll_ul");
                    //獲取位移的長度,即整個li的長度
                    var offset = ($(".scroll_ul li").width())*-1;
                    //動畫的過程,不太明白
                    scrollUl.stop().animate({marginLeft:offset},"slow",function(){
                        var firstItem = $(".scroll_ul li").first();
                        scrollUl.append(firstItem);
                        $(this).css("margin-left","0px");
                    });
                };
                //點擊左按鈕
                $(".prev_btn").click(function(){
                    var scrollUl = $(".scroll_ul");
                    var offset = ($(".scroll_ul li").width()*-1);
                    var lastItem = $(".scroll_ul li").last();
                    scrollUl.prepend(lastItem);
                    scrollUl.css("margin-left",offset);
                    scrollUl.animate({marginLeft:"0px"},"slow")
                });
                
                //鼠標滑過停止自動輪播
                $("#scroll").mouseover(function(){
                    if(timer){
                        clearTimeout(timer);
                    }
                });
                //鼠標移開繼續自動輪播
                $("#scroll").mouseout(function(){
                    timer=setInterval(function(){
                        nextscroll();
                    },3000)
                });
                //自動播放
                $("#scroll").mouseout();
                
            });
            /*  
                jquery用到的屬性
            
                find 搜索所有與指定表達式匹配的元素。這個函數是找出正在處理的元素的後代元素的好方法。
                stop 停止所有在指定元素上正在運行的動畫。如果隊列中有等待執行的動畫(並且clearQueue沒有設爲true),他們將被馬上執行
            
                animate(params,[speed],[easing],[fn])  用於創建自定義動畫的函數
                    params:一組包含作爲動畫屬性和終值的樣式屬性和及其值的集合
                    speed:三種預定速度之一的字符串("slow","normal", or "fast")或表示動畫時長的毫秒數值(如:1000)
                    easing:要使用的擦除效果的名稱(需要插件支持).默認jQuery提供"linear" 和 "swing".
                    fn:在動畫完成時執行的函數,每個元素執行一次。
            
                offset   獲取匹配元素在當前視口的相對偏移。
                first    獲取第一個元素
                append   向每個匹配的元素內部追加內容。
            
            
                last      獲取最後個元素
                prepend   向每個匹配的元素內部前置內容。這是向所有匹配元素內部的開始處插入內容的最佳方式。
            
            
            
            
            */
        </script>
    </head>
    <body>
        <div class="scroll" id="scroll">
            <div class="scroll_box">
                <ul class="scroll_ul">
                    <li class="scroll_item">
                        <div class="item_box">1</div>
                        <div class="item_box">2</div>
                        <div class="item_box">3</div>
                        <div class="item_box">4</div>
                    </li>
                    <li class="scroll_item">
                        <div class="item_box">5</div>
                        <div class="item_box">6</div>
                        <div class="item_box">7</div>
                        <div class="item_box">8</div>
                    </li>
                    <li class="scroll_item">
                        <div class="item_box">9</div>
                        <div class="item_box">10</div>
                        <div class="item_box">11</div>
                        <div class="item_box">12</div>
                    </li>
                </ul>
            </div>
            <a href="javascript:void(0)" class="btn prev_btn"></a>
            <a href="javascript:void(0)" class="btn next_btn"></a>
        </div>
    </body>
</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章