商品左右循环切换的效果

说明:这个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>

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