美文网首页
11.网易轮播

11.网易轮播

作者: 康轩 | 来源:发表于2017-06-04 02:39 被阅读0次

    完美代码
    <script>
    window.onload = function () {
    //1.获取标签
    var slider = document.getElementById('slider');
    var slider_scroll = document.getElementById('slider_scroll');
    var slider_ctrl = document.getElementById('slider_ctrl');
    var slider_main = document.getElementById('slider_main');
    var slider_pics = slider_main.children;
    var slider_w = slider.offsetWidth;
    var iNow = 0;//用来记录当前显示的图片的索引

        //2.操作标签
        //2.1添加span,用来控制下面的跳转
        for(var i= 0;i < slider_pics.length;i ++){
            //创建span
            var mySpan = document.createElement('span');
            //2.11绑定索引
            mySpan.innerHTML = slider_pics.length - i;
            mySpan.className = 'slider-ctl-icon';
            //插入span,每次都插入到 第2个标签之前 (2对应的索引是1)
            slider_ctrl.insertBefore(mySpan,slider_ctrl.children[1]);
    
    
        }
        slider_ctrl.children[1].className = 'slider-ctl-icon current';
    
        //2.2让除了第一张图片,都放在第一张图片的后面
        //遍历除了第一张的图片
        for(var i = 1;i < slider_pics.length;i++){
            slider_pics[i].style.left = slider_w +'px';
    
        }
        //2.3点击span,做对应的操作
        //遍历span
        for(var i = 0;i < slider_ctrl.children.length;i ++){
            //2.31取出span
            var mySpan = slider_ctrl.children[i];
            //2.32点击span,判断类型,然后做对应的操作
            mySpan.onmousedown = function () {
                //根据类名来判断点击了那个span
                if(this.className == 'slider_left'){
    
                    //让当前图片移动到右边,我们需要搞一个值用来记录当前显示的图片
                    buffer(slider_pics[iNow],{left:slider_w});
                    //让上张图片快速定位到左边
                    iNow --;
                    if (iNow < 0){
                        iNow = slider_pics.length - 1;
                    }
                    slider_pics[iNow].style.left = -slider_w +'px';
                    //让上一张图片快速移动到当前的位置
                    buffer(slider_pics[iNow],{left:0});
    
    
                }else if(this.className == 'slider_right'){
    
                    //当前图片左移
                    buffer(slider_pics[iNow],{left:-slider_w});
                    iNow ++;
                    if (iNow > slider_pics.length -1){
                        iNow = 0;
                    }
                    //让下一张图片快递定位到右边
                    slider_pics[iNow].style.left = slider_w + 'px';
                    //让下一张图片移动到当前的位置
                    buffer(slider_pics[iNow],{left:0});
    
    
    
    
                }else {
    
                    //我们要获取点击的span的索引,要和当前的图片比较
                    //一般做法:就是在创建span的时候绑定索引
                    var index = this.innerHTML - 1;
                  //判断
                    if(index > iNow){//点击右边
    
                        //让当前的图片快速左移
                        buffer(slider_pics[iNow],{left:-slider_w});
                        //让索引对应的值快速定位右边
                        //让当前的值等于index
                       iNow = index;
                        slider_pics[index].style.left = slider_w + 'px';
    
                        //让索引对应的值快速移动到当前位置
                        buffer(slider_pics[iNow],{left:0});
    
    
                    }else if(index < iNow){//左边
                        //让当前的图片快速右移
                        buffer(slider_pics[iNow],{left:slider_w});
                        //让索引对应的值快速定位左边
                        //让当前的值等于index
                        iNow = index;
                        slider_pics[index].style.left = -slider_w + 'px';
    
                        //让索引对应的值快速移动到当前位置
                        buffer(slider_pics[iNow],{left:0});
    
    
                    }
    
                }
    
                //更新索引
                changeIndex();
    
            }
        }
    
    
        //3.更新索引
        function  changeIndex(indx) {
    
            //就是让当前索引对应的span显示对应的颜色,其他原来的颜色
            //使用排他
            for(var i = 1;i < slider_ctrl.children.length -1;i ++){
    
                slider_ctrl.children[i].className = 'slider-ctl-icon';
    
            }
            slider_ctrl.children[iNow +1].className = 'slider-ctl-icon current'
    
        }
    
        //4自动滚动
        var timer = setInterval(autoPlay,1000)
    
        /*抽取自动滚动的函数
        * */
        function autoPlay() {
    
            //相当于点击了右键
            //当前图片左移
            buffer(slider_pics[iNow],{left:-slider_w});
            iNow ++;
            if (iNow > slider_pics.length -1){
                iNow = 0;
            }
            //让下一张图片快递定位到右边
            slider_pics[iNow].style.left = slider_w + 'px';
            //让下一张图片移动到当前的位置
            buffer(slider_pics[iNow],{left:0});
    
            //更新索引
            changeIndex();
    
    
    
        }
        //5.当移动到slider,停止定时器,离开就开启定时器
        slider.onmouseover = function () {
            clearInterval(timer);
        }
        slider.onmouseout = function () {
            timer = setInterval(autoPlay,1000);
        }
    
    
    
    }
    

    </script>

    相关文章

      网友评论

          本文标题:11.网易轮播

          本文链接:https://www.haomeiwen.com/subject/yngpfxtx.html