JS实现轮播图功能

简介: JS实现轮播图功能

里面有鼠标事件!

防抖功能!

还有左右小按钮!

HTML

<div class="lubotu">
      <div class="tupian">
        <img src="./img/ia_100000000044.jpg" alt="">
        <img src="./img/ia_100000002930.jpg" alt="">
        <img src="./img/ia_100000002932.jpg" alt="">
        <img src="./img/ia_100000002936.jpg" alt="">
        <img src="./img/ia_100000000044.jpg" alt="">
      </div>
      <div class="anjian">
        <img src="./img/ia_100000000.png" alt="" width="50px" height="50px" onclick="isLeft()">
        <img src="./img/ia_100000007.png" alt="" width="50px" height="50px" onclick="isRight()">
      </div>
    </div>

css

<style>
      * {
        margin: 0;
        padding: 0;
      }
      .lubotu {
        width: 500px;
        height: 350px;
        overflow: hidden;
        position: relative;
      }
      .tupian {
        width: 500%;
        height: 100%;
        display: flex;
      }
      .tupian img {
        width: 25%;
        height: 300px;
      }
      .anjian {
        width: 500px;
        display: flex;
        position: absolute;
        justify-content: space-between;
        top: 35%;
      }
    </style>

js

<script>
      let tupian = document.getElementsByClassName("tupian")[0];
      let imgTupian = tupian.children;
      let lubotu = document.getElementsByClassName("lubotu")[0];
      let imgWidth = imgTupian[0].offsetWidth;
      let index = 0;
      let times = setInterval(scrolls, 2000);
      // 轮播图/过度效果
      function scrolls() {
        index++;
        tupian.style.transition = "all 1s";
        tupian.style.marginLeft = -index * imgWidth + "px";
        if (index == 4) {
          setTimeout(function() {
            index = 0;
            tupian.style.transition = "";
            tupian.style.marginLeft = "0px";
          }, 1000)
        }
      }
      // onmousemove    鼠标移动时(鼠标事件)
      // onmouseenter   鼠标放上去时(鼠标事件)
      // onmouseout   鼠标移出时(鼠标事件)
      lubotu.onmousemove = function() {
        clearInterval(times);
      }
      lubotu.onmouseout = function() {
        times = setInterval(scrolls, 2000);
      }
      // 左按钮向右滑动
      function isLeft() {
        if (index == 0) {
          index = imgTupian.length - 1;
          tupian.style.transition = "";
          tupian.style.marginLeft = -index * imgWidth + "px";
        }
        setTimeout(function() {
          index--;
          tupian.style.transition = "all 1s";
          tupian.style.marginLeft = -index * imgWidth + "px";
        }, 0)
      }
      // 右按钮向右滑动    防抖功能
      let isStatus = true;
      function isRight() {
        if (!isStatus) {
          return;
        }
        isStatus = false;
        scrolls();
        setTimeout(function(){
          isStatus = true;
        },1000)
      }
    </script>
相关文章
|
20小时前
|
JSON 缓存 前端开发
JavaScript 新特性:新增声明命令与解构赋值的强大功能
JavaScript 新特性:新增声明命令与解构赋值的强大功能
|
3天前
|
SQL Web App开发 JavaScript
业务功能常用的JS代码片段
业务功能常用的JS代码片段
11 3
|
10天前
|
移动开发 JavaScript 前端开发
Phaser和Three.js是两个非常流行的JavaScript游戏框架,它们各自拥有独特的核心功能和使用场景
【6月更文挑战第16天】Phaser是开源的2D游戏引擎,适合HTML5游戏,提供物理引擎、图像渲染和资源管理,适用于2D游戏,如消消乐。Three.js是基于WebGL的3D库,用于创建复杂的3D场景和应用,涵盖从游戏到可视化领域的多种用途。两者分别在2D和3D开发中展现强大功能,选择取决于项目需求。
21 8
|
12天前
|
JavaScript 前端开发
JS导出excel功能
JS导出excel功能
|
20小时前
|
前端开发 JavaScript 安全
解锁 JavaScript ES6:函数与对象的高级扩展功能
解锁 JavaScript ES6:函数与对象的高级扩展功能
|
4天前
|
JavaScript 安全 前端开发
JS实现复制功能
JS实现复制功能
5 0
|
4天前
|
JavaScript 前端开发
JS分页功能
JS分页功能
4 0
|
5天前
|
JavaScript 前端开发
JS实现轮播图+圆点
JS实现轮播图+圆点
7 0
|
5天前
|
JavaScript 前端开发
JS走马灯小功能制作
JS走马灯小功能制作
4 0
|
8天前
|
JavaScript 前端开发
JS实现移动端的轮播图滑动事件
JS实现移动端的轮播图滑动事件
15 0