轮播

**

  1.     </ol>
        <div id="leftBn"><a href="javascript:;" class="aStyle">
                < </a>
        </div>
        <div id="rightBn"><a href="javascript:;" class="aStyle">></a></div>
    </div>
    
    <script>
        var leftBn = document.getElementById("leftBn");
        var rightBn = document.getElementById("rightBn");
        var rollImg = document.getElementById("rollImg");
        rollImg.addEventListener("mouseenter", function (e) {
            leftBn.style.display = "block";
            rightBn.style.display = "block";
            clearInterval(timer); //清除定时器;
            timer = null;
        })
        rollImg.addEventListener("mouseleave", function (e) {
            leftBn.style.display = "none";
            rightBn.style.display = "none";
            timer = setInterval(() => { //重新开启定时器 
                rightBn.click(); //手动调用点击事件
            }, 2000);
        })
        var ul = rollImg.querySelector("ul");
        var ol = rollImg.querySelector("ol");
        var rollImgWidth = rollImg.offsetWidth;
        //动态生成小圆圈
        for (let i = 0; i < ul.children.length; i++) {
            var li = document.createElement("li");
            li.setAttribute("data-index", i)
            ol.appendChild(li);
            //排他思想--想清楚所有的类名,再添加当前的类名
            ol.children[i].onclick = function () {
                for (let i = 0; i < ol.children.length; i++) {
                    ol.children[i].className = ""
                }
                this.className = "current";
                var index = this.getAttribute("data-index");
                //将下标给num
                num = index;
                //将下标给circle小圆圈
                circle = index;
                console.log(index);
    
                animation(ul, -index * rollImgWidth)
            }
        }
        ol.children[0].className = "current";
        var first = ul.children[0].cloneNode(true); //复制图片添加到最后
        ul.appendChild(first);
        //左右按钮事件
        var num = 0;
        var circle = 0; //控制小圆圈
        var flag = true; //设置节流阀开关
        leftBn.addEventListener("click", function () {
            if (flag) {
                flag = false;
                if (num == 0) {
                    num = ul.children.length - 1;
                    ul.style.left = num * rollImgWidth + "px";
                }
                num--;
                animation(ul, -num * rollImgWidth, function () {
                    flag = true; //完成时打开节流阀
                });
                circle--;
                if (circle < 0) {
                    circle = ol.children.length - 1;
                }
                //circle=circle<0?ol.children.length-1:circle
                circleChange();
            }
        })
        rightBn.addEventListener("click", function () {
            if (flag) {
                flag = false;
                //无缝滚动 -先将第一张图片复制,添加到最后一张图片,然后判断
                if (num == ul.children.length - 1) {
                    ul.style.left = 0
                    num = 0
                }
                num++;
                animation(ul, -num * rollImgWidth, function () {
                    flag = true;
                });
                circle++;
                if (circle == ol.children.length) { //判断 若为最后一张的克隆图片将circle重新赋值为0;
                    circle = 0
                }
                circleChange();
            }
        })
    
        function circleChange() {
            for (let i = 0; i < ol.children.length; i++) {
                ol.children[i].className = "";
            }
            ol.children[circle].className = "current"
        }
        var timer = setInterval(() => {
            rightBn.click(); //手动调用点击事件
        }, 2000);
    </script>
    
**
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值