轮播图

轮播图的制作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        li {
            list-style: none;
            float: left;
        }
        .slide-list {
            position: relative;
            width: 590px;
            height: 470px;
            margin: 100px auto;
            overflow: hidden;
        }
        .slide-list .lunbotu {
            position: absolute;
            width: 2400px;
            /* left: -590px; */
        }
        .slide-list .lunbotu li a {
            display: block;
        }
        .slide-list .lunbotu li a img {
            width: 590px;
            height: 470px;
        }

        .slide-list .bef {
            background-color: red;
            position: absolute;
            cursor: pointer;
            left: 0;
            top: 50%;
        }
        .slide-list .aft {
            background-color: red;
            position: absolute;
            cursor: pointer;
            right: 0;
            top: 50%;
        }
        .slide-list .yuandian {
            position: absolute;
            bottom: 10px;
            left: 20px;

        }
        .yuandian li {
            border: 2px solid #ffffff;
            width: 10px;
            height: 10px;
            margin: 0 5px;
            border-radius: 50%;
            background-color: #ffffff;
        }

    </style>
    <div class="slide-list">
        <ul class="lunbotu">
           <li><a href="#"><img src="images/q.jpg" alt=""></a></li>
           <li><a href="#"><img src="images/ac8d2aff9a2e4331.jpg.webp" alt=""></a></li>
           <li><a href="#"><img src="images/8ffba6417f4c9068.jpg.webp" alt=""></a></li>
           <li><a href="#"><img src="images/ac8d2aff9a2e4331.jpg.webp" alt=""></a></li>
        </ul>
        <div class="bef">《--</div>
        <div class="aft">--》</div>
        <ul class="yuandian">
        </ul>
    </div>

    <script>
        // 动态生成小圆圈
        var flag = true;
        var timer;
        var num = 0
        var bef = document.querySelector('.bef');
        var aft = document.querySelector('.aft');
        var lunbotu = document.querySelector('.lunbotu');
        var lunbotu_list = document.querySelector('.lunbotu').querySelectorAll('li');
        for(var i = 0; i < lunbotu_list.length; i++) {
            let yuandian_li = document.createElement('li');
            document.querySelector('.yuandian').appendChild(yuandian_li);
            yuandian_li.index = i;
            // 小圆点点击变色
            var yuandian_list = document.querySelector('.yuandian').querySelectorAll('li');
            yuandian_li.onclick = function() {
                for(var j = 0; j < lunbotu_list.length; j++) {
                    yuandian_list[j].style.background = '#ffffff';
                }
                this.style.background = '#fc6308';
                // animate函数实现点击小圆点 动画移动效果
                animate(lunbotu,-590*this.index);
                num = this.index;
            } 
        }
        yuandian_list[num].style.background = '#fc6308'
        // 点击bef和aft后变换图片
        bef.onclick = function() {
            flag = false;
            if(num>0) {
                num--;
            } else {
                num = 0;
            }
            dianji();
        }


        aft.onclick = function() {
            flag = false;
            num++;
            if(num == 4) {
                lunbotu.style.left = 0 + 'px';
                num = 0;
            }
            dianji();
        }


        function dianji() {
            animate(lunbotu,-num*590)
            for(var j = 0; j < lunbotu_list.length; j++) {
                    yuandian_list[j].style.background = '#ffffff';
                }
            yuandian_list[num].style.background = '#fc6308';

        }
        

        // animate函数动画移动
        function animate(obj,juli) {
            clearTimeout(obj.timer);
            obj.timer = setInterval(() => {
                // 核心算法(记住)
                // if(juli < obj.offsetLeft) {
                //     obj.style.left = obj.offsetLeft - Math.ceil((obj.offsetLeft - juli)/5) + 'px';
                // } else {
                //     obj.style.left = obj.offsetLeft - Math.floor((obj.offsetLeft - juli)/5) + 'px';
                // }
                var step = (juli - obj.offsetLeft)/5;
                step = step>0 ? Math.ceil(step):Math.floor(step);
                obj.style.left = obj.offsetLeft + step + 'px';

                if(obj.offsetLeft == juli) {
                    clearTimeout(obj.timer);
                }
            }, 100);
        }

        // 自动播放图片

        function time() {
            timer = setInterval(() => {
            aft.click();    // 手动点击事件 事件源:click()
            }, 2000);
        }
        time()

        // 党鼠标悬浮在盒子上时候,定时器停止
        document.querySelector('.slide-list').onmouseenter = function() {
            clearInterval(timer);
        }
        document.querySelector('.slide-list').onmouseleave = function() {
            time();
        }






        
    </script>
</html
posted @ 2022-05-16 15:47  a立方  阅读(12)  评论(0编辑  收藏  举报