经典轮播图的实现

最为经典的轮播图模板,可以在此之上进行各种样式修改

1 . 自动轮播
2 . 点击下方对应点进行图片切换
3 . 点击左右按钮,进行上一张,下一张切换
这是最为基础的模板,初学者可以拿来练手,老手可以在此之上进行样式修改,我在写这个轮播图的时候主要以实现功能为主,样式只做了简单的调整,不能称得上美观,但是五脏俱全

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .main{
            width: 1200px;
            height: 460px;
            position: relative;
        }
        .banner{
            width: 1200px;
            height: 460px;
            position: relative;
            overflow: hidden;
        }
        .slideImg{
            display: none;
        }
        .imgActive{
            display: block;
        }
        //此处以三张图片为例,可以自行增加图片数量,但注意修改下面的参数
        .slid1{
            width: 1200px;
            height: 460px;
            background-image: url(img/1.jpg);
        }
        .slid2{
            width: 1200px;
            height: 460px;
            background-image: url(img/2.jpg);
        }
        .slid3{
            width: 1200px;
            height: 460px;
            background-image: url(img/3.jpg);
        }
        .prev{
            position: absolute;
            width: 30px;
            height: 60px;
            background-color: red;
            left: 0;
            top: 230px;
            margin-top: -30px;
        }
        .next{
            position: absolute;
            width: 30px;
            height: 60px;
            background-color: red;
            right: 0;
            top: 230px;
            margin-top: -30px;
        }
        .dots{
            position: absolute;
            left: 50%;
            bottom: 0;
            margin-left: -100px;
        }
        .dots span{
            display: inline-block;
            border-radius: 50%;
            margin-left: 20px;
            width: 30px;
            height: 30px;
            background-color: red;
        }
        .dots span.active{
            background-color: green;
        }
    </style>
</head>
<body>
//定义最外层的div  main方便插入到任何组件中去
    <div class="main" id="main">
    //轮播图的最外围div,banner
        <div class="banner" id="banner">
            <a href="#">
                <div class="slideImg slid1 imgActive"></div>
            </a>
            <a href="#">
                <div class="slideImg slid2"></div>
            </a>
            <a href="#">
                <div class="slideImg slid3"></div>
            </a>
        </div>
        //分别为上一张,下一张
        <a class="prev" id="prev" href="#"></a>
        <a class="next" id="next" href="#"></a>
        //图片居中下方的点,点击可以切换到对应图片
        <div class="dots" id="dots">
            <span class="active"></span>
            <span></span>
            <span></span>
        </div>
    </div>

    <script>
    //所需要获取的所有变量,此处的index 和timer 一定要定义成全局变量,非常重要
        var index = 0,
            timer = null,
            main = document.getElementById("main"),
            prev = document.getElementById("prev"),
            next = document.getElementById("next"),
            imgs = document.getElementById("banner").getElementsByTagName('div'),
            len = imgs.length,
            dots = document.getElementById("dots").getElementsByTagName('span');
            // console.log(len);
            // console.log(dots);
	//封装切换图片的函数,减少代码量
            function changeImg(){
                for (let i = 0; i < len; i++) {
                    imgs[i].style.display = 'none';
                    dots[i].className = "";
                }
                imgs[index].style.display = 'block';
                dots[index].className = "active";
            }
	//下一张
            next.addEventListener('click',function(){
                index++;
                if(index>=len) index = 0;
                changeImg();
            })
	//上一张
            prev.addEventListener('click',function(){
                index--;
                if(index<0) index = len-1;
                changeImg();
            })
	//底部点点,点击切换图片
            for (let i = 0; i < len; i++) {
                dots[i].setAttribute("tid",i);
                dots[i].addEventListener('click',function(){
                //this指的是对应点击事件的元素
                    index = this.getAttribute('tid');
                    changeImg();
                })
            }
	//开始自动轮播图片
            function startAutoPlay(){
                timer = setInterval(function(){
                    index ++ ;
                    if(index>=len) index = 0;
                    changeImg();
                },2000)
            }
	//结束自动轮播图片
            function stopAutoPlay(){
                if(timer){
                    clearInterval(timer);
                }
            }
	//鼠标移入时,停止轮播
            main.addEventListener('mouseover',stopAutoPlay)
    //鼠标移出时,开始轮播
            main.addEventListener('mouseout',startAutoPlay)
	//加载完成后自动调用开始轮播函数
            startAutoPlay();
    </script>
</body>
</html>

总体思路简单易懂,代码量也很少,很适合新手实习生练手,基本上不看原代码自己写个三四遍就能熟练掌握了
在这里插入图片描述
运行结果就是这样,左右两边的按钮,和下面的小点点我都没有做样式上的修改,前面也说了,主要是功能上完整,样式可以根据自己喜欢随便修改

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值