• js轮播图代码


    window.addEventListener("load", function () {
      // 1、获取元素
      var arrow_l = document.querySelector(".arrow-l");
      var arrow_r = document.querySelector(".arrow-r");
      var focus = document.querySelector(".focus");
      //   轮播图的宽度  计算移动的位置要用
      var focusWidth = focus.offsetWidth;
      //   2、鼠标经过focus就显示隐藏左右按钮
      //   2.1鼠标经过显示左右按钮  用mouseenter时因为可以避免冒泡
      focus.addEventListener("mouseenter", function () {
        arrow_l.style.display = "block";
        arrow_r.style.display = "block";
        clearInterval(timer);
        timer = null; //清除定时器变量
      });
      //   2.2鼠标离开隐藏左右按钮
      focus.addEventListener("mouseleave", function () {
        arrow_l.style.display = "none";
        arrow_r.style.display = "none";
        timer = setInterval(function () {
          // 手动调用点击事件
          arrow_r.click();
        }, 2000);
      });
      //   3、动态生成小圆圈,有几张图片生成几个小圆圈
      //   3.1先获取元素(限定范围)
      var ul = focus.querySelector("ul");
      var ol = focus.querySelector(".circle");
      //   3.2利用 for循环动态生成li
      for (i = 0; i < ul.children.length; i++) {
        // 3.3创建节点li
        var li = document.createElement("li");
        // 生成小圆点的同时 自定义一个索引号属性
        li.setAttribute("index", i);
        // 3.4将li插入ol中
        ol.appendChild(li);
        li.addEventListener("click", function () {
          // 3.5 利用for循环和排他思想设置ol中小圆点点击后的样式
          //    干掉其他人
          for (i = 0; i < ol.children.length; i++) {
            ol.children[i].className = "";
          }
          //   留下我自己
          this.className = "current";
          //   拿到索引号  为了后面计算动画移动距离
          var index = this.getAttribute("index");
          //   在点击小圆点的时候把拿到的索引号给num和 circle 让大家都同步
          num = index;
          circle = index;
          //   调用动画函数
          animate(ul, -index * focusWidth);
        });
      }
      // 把ol里面的第一个小li设置类名为 current
      ol.children[0].className = "current";
      // 生成小圆点的同时,绑定注册事件
      // 无缝滚动需要深克隆ul的第一个li  放在小圆点生成的后面 也就是for循环的外面
      var first = ul.children[0].cloneNode(true);
      ul.appendChild(first);
    
      //   4、右侧按钮
      //   定义一个全局变量num,点击一次,自增1,让num乘以图片的宽度就是ul移动的距离
      var num = 0;
      //   再定义一个全局变量circle  每点击一次右侧按钮,自增1 小圆点跟着一起走
      var circle = 0; // circle 控制小圆圈的播放
      var flag = true; // flag 节流阀
      arrow_r.addEventListener("click", function () {
        if (flag) {
          flag = false; // 关闭节流阀
          //   因为要无缝滚动,所以多了一张图片,当图片滚动到最后一张克隆的图片时,让ul快速回到最左边,即left值为0,同时num的值也设置为0,这样 加1后 新开始滚动
          if (num == ul.children.length - 1) {
            ul.style.left = 0;
            num = 0;
          }
          num++;
          animate(ul, -num * focusWidth, function () {
            flag = true; // 打开节流阀
          });
    
          circle++;
          // 当点击按钮走到最后一张图片的时候,也就是隐藏的那个小圆点时,小圆点变成第一个
          if (circle == ol.children.length) {
            circle = 0;
          }
          // 干掉其他人
          for (i = 0; i < ol.children.length; i++) {
            ol.children[i].className = "";
          }
          // 保留我自己
          ol.children[circle].className = "current";
        }
      });
    
      //   5、左侧按钮
      arrow_l.addEventListener("click", function () {
        if (flag) {
          flag = false; // 关闭节流阀
          //   当处于第一张图片的时候 ,也就是num=0的时候,num是最后一张图片
          if (num == 0) {
            num = ul.children.length - 1;
            ul.style.left = -num * focusWidth + "px";
          }
          num--;
          animate(ul, -num * focusWidth, function () {
            flag = true; // 打开节流阀
          });
    
          circle--;
          // 当小于第一张图片的时候,小圆点显示最后一个
          if (circle < 0) {
            circle = ol.children.length - 1;
          }
          // 干掉其他人
          for (i = 0; i < ol.children.length; i++) {
            ol.children[i].className = "";
          }
          // 保留我自己
          ol.children[circle].className = "current";
        }
      });
    
      //   6、自动播放
      var timer = setInterval(function () {
        arrow_r.click();
      }, 2000);
    });
  • 相关阅读:
    MapReduce&Yarn
    Linux网络配置问题
    Linux命令总结
    Hadoop优化&新特性
    Zookeeper
    idea中修改注释颜色
    Linuxbash未找到命令问题
    Hadoop3.0入门
    HDFS
    SpringBoot
  • 原文地址:https://www.cnblogs.com/ndh074512/p/13976906.html
Copyright © 2020-2023  润新知