图片轮播原生实现

图片轮播原生实现:

  • 自动轮播播放
  • 前后按钮控制翻页
先晒效果图如下:


一、图片轮播HTML代码

<div id="myCarousel" class="carousel">
    <div class="item" id="item">
        <li class="active"><img src="img/1.jpg"></li>
        <li><img src="img/2.jpg"></li>
        <li><img src="img/3.jpg"></li>
        <li><img src="img/4.jpg"></li>
        <li><img src="img/5.jpg"></li>
        <li><img src="img/6.jpg"></li>
        <li><img src="img/7.jpg"></li>
        <li><img src="img/8.jpg"></li>
        <li><img src="img/9.jpg"></li>
        <li><img src="img/10.jpg"></li>
    </div>
    <ol class="indicator" id="indicator">
        <li class="active"><img src="img/1.jpg"></li>
        <li><img src="img/2.jpg"></li>
        <li><img src="img/3.jpg"></li>
        <li><img src="img/4.jpg"></li>
        <li><img src="img/5.jpg"></li>
        <li><img src="img/6.jpg"></li>
        <li><img src="img/7.jpg"></li>
        <li><img src="img/8.jpg"></li>
        <li><img src="img/9.jpg"></li>
        <li><img src="img/10.jpg"></li>
    </ol>
    <a class="control left" id="pre" href="#myCarousel">< </a>
    <a class="control right" id="next" href="#myCarousel">> </a>
</div>
首先定义图片项目展示,然后是图片对应指标,最后是前后翻页控制按钮。

二、图片轮播CSS代码

      <style>
            * {
                margin: 0;
                padding: 0;
            }
            body {
                background: #000;
            }
            .carousel {
                position: relative;
                width: 600px;
                height: 400px;
                background: #fff;
                margin: 20px auto;
            }
            .item {
                position: absolute;
                top: 0;
                left: 0;
                width: 600px;
                height: 340px;
                overflow: hidden;
                box-sizing: border-box;
            }
            .item li {
                position: absolute;
                top: 0;
                left: 0;
                width: 600px;
                height: 340px;
                display: inline-block;
                box-sizing: border-box;
                opacity: 0;
                transition: opacity 0.5s linear
            }
            .item li img {
                width: 600px;
                height: 340px;
                box-sizing: border-box;
            }
            .item li.active {
                opacity: 1;
            }
            .indicator {
                position: absolute;
                left: 0;
                bottom: 0;
                width: 600px;
                height: 60px;
                display: flex;
                justify-content: center;
                align-items: flex-end;
                overflow: hidden;
                box-sizing: border-box;
                padding: 3px;
            }
            .indicator li {
                cursor: pointer;
                list-style-type: none;
                margin-right: 5px;
            }
            .indicator li.active img {
                opacity: 1;
                border: 1px solid #f60;
            }
            .indicator li img{
                width: 50px;
                height: 50px;
                border: 1px solid saddlebrown;
                opacity: 0.5;
                box-sizing: border-box;
            }
            .control {
                text-decoration: none;
                display: inline-block;
                width: 30px;
                height: 50px;
                text-align: center;
                line-height: 50px;
                font-size: 30px;
                color: #e3e3e3;
                font-weight: bold;
                border-radius: 10px;
                z-index: 3;
                cursor: pointer;
                border: 1px solid white;
                background-color: #070707;
                opacity: 0.3;
            }
            .left {
                position: absolute;
                left: 0;
                top: 170px;
            }
            .right {
                position: absolute;
                right: 0;
                top: 170px;
            }
        </style>
图片淡入淡出(opacity),这里对图片指标块采用了flex布局以方便其定位。

三、图片轮播JavaScript代码

<script>
    var carousel=document.getElementById('myCarousel');
    var items=document.getElementById('item');
    var indicators=document.getElementById('indicator');
    var imgs=items.getElementsByTagName('li');
    var indic=indicators.getElementsByTagName('li');
    var pre=document.getElementById('pre');
    var next=document.getElementById('next');
    var i=index=0;
    var play=null;
    function show(a){
        for(i=0;i<indic.length;i++ ){
            indic[i].className='';
            indic[a].className='active';
        }
        for(i=0;i<imgs.length;i++){
            imgs[i].style.opacity=0;
            imgs[a].style.opacity=1;
        }
    }
    for(i=0;i<indic.length;i++){
        indic[i].index=i;
        indic[i].addEventListener('mouseover', function(){
            show(this.index);
            clearInterval(play);
            index=this.index;
        });
    }
    function autoPlay(){
        play=setInterval(function(){
            index++;
            index = index>=imgs.length ? 0:index;
            show(index);
        },1000)
    }
    autoPlay();
    pre.addEventListener('click', function () {
        index=index-1>=0 ? index-1:imgs.length-1;
        show(index);
    });
    next.addEventListener('click', function () {
        index=index+1<imgs.length ? index+1:0;
        show(index);
    });
    carousel.addEventListener('mouseover',function(){
        clearInterval(play);
    });
    carousel.addEventListener('mouseout',function(){
        autoPlay();
    });
</script>
定义全局变量当前图片index,自动轮播定时器播放。。。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值