轮播思路及完整可运行代码

    用过很多轮播插件,很少自己写一个,所以今天在这里说一下我写轮播的思路和具体实现过程。

     轮播的主体就是让图片轮流变换,切换图片的方式。

  

 

我们只需要固定要显示的区域然后让要显示的东西移动,给盒子设置overflew:hidden,相当于经过窗口的元素显示其余的隐藏,就可以实现单方向切图效果。

css部分:

    
    <style>
        
        #box{
            width:300px;
            height: 200px;
            position: relative;
            margin: 0 auto;
            
        
        }
        #sliderbox{
            width: 2000px;
            height: 200px;
            position: relative;
            right: 0;
            
        }
        
        #sliderbox img{
            width: 300px;
            height: 200px;
            position: relative;
            float: left;
            
            }
        #bt{
            width: 100%;
            height:30px;
            position: absolute;
            bottom:0px;
            text-align: center;
        }
        
        #bt span{
            margin: 0 30px;
            color: red;
        }
        
        #doublebt{
            width: 100%;
            height: 50px;
            position: absolute;
            top: 80px;
        }
        #prev{
            width: 30px;
            height: 30px;
            float: left;
        }
        #next{
            width: 30px;
            height: 30px;
            float: right;
        }
        .border{
            border: 1px solid red;
        }
    </style>

html部分:

        <!--显示盒子-->
        <div id="box">
            
        <!--轮播图-->    
        <div id="sliderbox">
            <img src="http://www.pptbz.com/pptpic/UploadFiles_6909/201203/2012031220134655.jpg"/>
            <img src="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3240052967,3443336204&fm=27&gp=0.jpg"/>
            <img src="https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=873265023,1618187578&fm=27&gp=0.jpg"/> 
        </div>
        <!--按键-->
        <div id="bt">
       <span id="">1</span>
       <span id="">2</span>
       <span id="">3</span>
        </div>    
        <!--左右控制-->
        <div id="doublebt">
            <img src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=1131338284,2493177628&fm=26&gp=0.jpg" id="prev"/>
            <img src="https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=2358841409,1917272712&fm=26&gp=0.jpg" id="next"/>
        </div>
        
        </div>

js 实现简单轮播,每一次移动一个图片的宽度的单位,当然显示的盒子最好也是图片的宽度,轮播到最后一张时返回第一张,反之亦然,可以设置一个计数器,判断轮播的位置 ,移动的距离(计数器*一张图片的宽度)下面是具体js代码:

<script type="text/javascript">
    var silder = document.getElementById("sliderbox")
    var time = setInterval("move()", 2000)
    var sw = 0; //计数
    var img = document.getElementById("box"); //盒子显示图片的范围
    var btspan = document.getElementById("bt").getElementsByTagName("span");
    //控制轮播    
    function move() {
        sw++;
        if(sw > 2) {
            sw = 0
            silder.style.right = 300 * sw + "px";
            addBorder(sw);
        }
        silder.style.right = 300 * sw + "px";
        console.log(btspan[sw]);
        addBorder(sw);
    }
    //鼠标悬停                 
    img.onmouseover = function() {
        console.log(1);
        clearInterval(time);
    }
    img.onmouseout = function() {
        console.log(2);
        time = setInterval("move()", 2000);
    }
    //浮点控制轮播            
    for(let i = 0; i < btspan.length; i++) {
        //span元素被点击跳转到对应图片    
        btspan[i].onclick = function() {
            silder.style.right = 300 * i + "px";
            $(this).addClass("border").siblings().removeClass("border")
        }
    }
    //左右按键控制轮播
    //上一个
    var prev = document.getElementById("prev")
    prev.onclick = function() {
        this.style.opacity = "0.7";
        sw--;
        if(sw < 0) {
            sw = 2;
            silder.style.right = 300 * sw + "px";
            addBorder(sw);
        }
        silder.style.right = 300 * sw + "px";
        addBorder(sw);
    }
    //下一个      
    var next = document.getElementById("next")
    next.onclick = function() {
        this.style.opacity = "0.7";
        sw++;
        if(sw > 2) {
            sw = 0;
            silder.style.right = 300 * sw + "px";
            addBorder(sw);
        }
        silder.style.right = 300 * sw + "px";
        addBorder(sw);
    }

    //添加border 样式
    function addBorder(sw) {
        $("span").eq(sw).addClass("border").siblings().removeClass("border")
    }
</script>
        

 

好了,轮播到这里就实现了。

 

posted @ 2019-03-20 16:54  菜巴豆  阅读(239)  评论(1编辑  收藏  举报