纯js实现轮播图

效果:

在左右两侧各有一个箭头,分别指的是向左和向右的图片切换
在图片的下方有一排圆点按钮,每个按钮有各自的点击事件,点击任意一个按钮就切换到对应的图片
不点击图片时,图片会自动播放标题

html
<div class="box">
  <ul class="ullist">
    <li class="lis active"><img src="img/1.jpg" alt="" width="600px" height="300px"></li>
       <li class="lis"><img src="img/2.jpg" alt="" width="600px" height="300px"></li>
       <li class="lis"><img src="img/3.jpg" alt="" width="600px" height="300px"></li>
       <li class="lis"><img src="img/4.jpg" alt="" width="600px" height="300px"></li>
  </ul>
  <ul class="xy">
       <li class="xyd active" data-index='0'></li>
       <li class="xyd" data-index='1'></li>
       <li class="xyd" data-index='2'></li>
       <li class="xyd" data-index='3'></li>
  </ul>
       <button class="btn" id='left'><</button>
       <button class="btn" id='right'>></button>
</div>
css部分
<style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 600px;
            height: 300px;
            position: relative;
            margin: 0 auto;
        }
        .ullist{
            width: 600px;
            height: 300px;
            list-style: none;
            /* border: 1px solid red; */
            position: relative;
        }
        .lis{
            width: 600px;
            height: 300px;
            /* border: 1px solid green; */
            position: absolute;
        }
        .btn{
            width: 30px;
            height:60px;
            position: absolute;
            top: 100px;
            z-index: 100;
            opacity: 0.5;
        }
        #left{
            left: 0;
        }
        #right{
            right: 0;
        }
        .lis.active{
            z-index: 10;
        }
        .xy{
            list-style: none;
            position: absolute;
            right: 20px;
            bottom: 20px;
            z-index: 1000;
        }
        .xyd{
            width: 8px;
            height: 8px;
            background-color: greenyellow;
            border-radius:100% ;
            float: left;
            margin-right:14px ;
            border-style: solid;
            border-width: 2px;
            border-color: #ffffff;
        }
        .xyd.active{
            background-color: hotpink;
        }
    </style>
js部分
 <script>
        var olis=document.getElementsByClassName('lis')//获取图片的li
        var oleft=document.getElementById('left')//左边按钮
        var oright=document.getElementById('right')//右边按钮
        var oxyd=document.getElementsByClassName('xyd')//获取小圆点


        var index=0;    //index表示第几张图片在展示    第index张图片在显示

        //从0开始吧active全部去掉只留下lis
        var clearActive=function(){
            for(var i=0;i<olis.length;i++){
                olis[i].className='lis'; 
            }
            for(var i=0;i<oxyd.length;i++){
                oxyd[i].className='xyd'; 
            }
        }
        //添加active
        var start=function(){
            clearActive();
            
            olis[index].className='lis active';  //olis[index]表示这张图片有active这个类名
            oxyd[index].className='xyd active';
        }
        //右边的按钮(下一个图片)
        var down=function(){
            if(index<olis.length-1){
                index++;
            }else{
                index=0
            }
            start();
        }
        //左边的按钮(上一个图片)
        var up=function(){
            if(index==0){
                index=3
            }else{
                index--
            }
            start()
        }
        //addEventListener事件监听
        //addEventListener('事件',函数,布尔值(false  true))
        oright.addEventListener('click',function(){
            down()
        })
        oleft.addEventListener('click',function(){
            up()
        })

        for(var i=0;i<oxyd.length;i++){
            oxyd[i].addEventListener('click',function(){
                var oxyds=this.getAttribute('data-index');
                index=oxyds
                start()
            })
        }


        setInterval(function(){
            down()
        },1500)
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值