js轮播图有左右箭头和小点

简介: js轮播图有左右箭头和小点

拿走直接用!!!

HTML:

<div class="all">
  <div class="show">
    <div class="print"></div>
    <div class="dots"></div>
    <div id="direction">
      <div onclick="prev()">⬅</div>
      <div class="two" onclick="next()">➡</div>
    </div>
  </div>
</div>

css:

* {
        margin: 0;
        padding: 0;
      }
      .all {
        margin-left: 10%;
      }
      .show {
        width: 86%;
        height: 650px;
        margin-left: 20px;
        margin-top: 20px;
        overflow: hidden;
        position: relative;
      }
      .print {
        display: flex;
        width: 800%;
        transition: all 0.5s;
      }
      .dots {
        display: flex;
        position: absolute;
        bottom: 10px;
        left: 50%;
        transform: translateX(-50%);
      }
      .dot {
        width: 15px;
        height: 15px;
        margin-left: 13px;
        border-radius: 10px;
        background-color: honeydew;
        cursor: pointer;
      }
      .dot.active {
        background-color: pink;
      }
      .print img {
        width: 100%;
        height: 650px;
        object-fit: cover;
      }
      #direction {
        width: 100%;
        height: 5vh;
        position: absolute;
        top: 45%;
        display: flex;
      }
      #direction div {
        width: 3%;
        height: 5vh;
        text-align: center;
        border-radius: 10px;
        line-height: 5vh;
        font-size: 16px;
        background-color: rgba(0, 0, 0, 0.2);
        color: #fff;
        overflow: hidden;
        cursor: pointer;
      }
      .two {
        margin-left: 94%;
      }

js:

<script>
      // 获取数据
      let data;
      let time;
      let big = document.getElementsByClassName('all')[0];
      let index = 0;
      let dotContainer = document.querySelector('.dots');
      let print = document.querySelector('.print');
      let dots = [];
      
      let xhr = new XMLHttpRequest();
      xhr.open('get', 'js/new_file.json', true);
      xhr.send();
      xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
          let text = xhr.responseText;
          console.log(text);
          data = JSON.parse(text);
          console.log(data);
          renderer(data);
        }
      };
      // 渲染轮播图
      function renderer(data) {
        let str = '';
        let dotStr = '';
        for (let i = 0; i < data.length; i++) {
          str += `<img src="${data[i].path}" alt="" />`; // 构建图片标签
          dotStr += `<div class="dot" onclick="control(${i})"></div>`; // 构建小圆点
        }
        str += `<img src="${data[0].path}" alt="" />`; // 添加第一张图片到最后,实现无缝轮播
        print.innerHTML = str; // 插入图片标签
        dotContainer.innerHTML = dotStr; // 插入小圆点
        dots = document.querySelectorAll('.dot'); // 获取所有小圆点
        dots[0].classList.add('active'); // 将第一个小圆点设为激活状态
        times();
      }
      // 定时器,控制自动轮播
      function times() {
        time = setInterval(function() {
          next();
        }, 3000);
      }
      // 下一张
      function next() {
        index++;
        moveSlide(); // 移动轮播图
      }
      // 上一张
      function prev() {
        index--;
        moveSlide(); // 移动轮播图
      }
      // 控制显示特定图片
      function control(i) {
        index = i;
        moveSlide(); // 移动轮播图
      }
      // 移动轮播图
      function moveSlide() {
        if (index > data.length) {
          // 处理超出范围的情况
          print.style.transition = "none";
          print.style.marginLeft = "0%";
          index = 0;
          setTimeout(function() {
            print.style.transition = "margin-left 0.5s";
            index++;
            print.style.marginLeft = `-${index * 100}%`;
          }, 20);
        } else if (index < 0) {
          // 处理负数的情况
          print.style.transition = "none";
          index = data.length - 1;
          print.style.marginLeft = `-${index * 100}%`;
          setTimeout(function() {
            print.style.transition = "margin-left 0.5s";
          }, 20);
        } else {
          // 正常情况下的移动
          print.style.transition = "margin-left 0.5s";
          print.style.marginLeft = `-${index * 100}%`;
        }
        updateDots(); // 更新小圆点
      }
      // 更新小圆点状态
      function updateDots() {
        dots.forEach(function(dot, i) {
          let actualIndex = index % data.length;
          if (i === actualIndex) {
            dot.classList.add('active'); // 激活当前图片对应的小圆点
          } else {
            dot.classList.remove('active'); // 移除其他小圆点的激活状态
          }
        });
      }
      // 鼠标悬停暂停自动轮播
      big.onmouseover = function() {
        clearInterval(time);
      }
      big.onmouseout = function() {
        clearInterval(time);
        time = setInterval(function() {
          next();
        }, 3000);
      }
    </script>


相关文章
|
24天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
17天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
4天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
1天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
241 12
|
19天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
|
21天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2579 22
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
3天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
169 2
|
1天前
|
编译器 C#
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
101 65
|
21天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1578 16
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
4天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
256 2