首页 > 编程语言 >使用JavaScript做一个轮播图

使用JavaScript做一个轮播图

时间:2024-07-23 19:25:18浏览次数:10  
标签:50% 轮播 指示器 JavaScript li img 使用 var 图片

  <!DOCTYPE html>
  <html lang="en">

  <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>图片轮播</title>
      <style>
          /* 轮播图容器样式 */
          .box {
              height: 500px;
              width: 600px;
              border: 1px solid red;
              margin: 100px auto;
              position: relative; /* 为绝对定位的子元素提供参考 */
          }

          /* 图片样式 */
          .it {
              width: 600px;
              height: 500px;
              position: absolute;
              left: 0;
              top: 0;
              opacity: 0; /* 默认隐藏所有图片 */
              transition: all ease 1s; /* 添加过渡效果 */
          }

          /* 分页指示器容器样式 */
          .pation {
              position: absolute;
              list-style: none;
              padding: 0;
              width: 200px;
              transform: translateX(-50%);
              left: 50%;
              bottom: 10px;
              z-index: 1;
              display: flex;
              justify-content: space-around;
          }

          /* 当前活动图片的样式 */
          .active {
              opacity: 1;
          }

          /* 分页指示器样式 */
          .pation li {
              width: 15px;
              height: 15px;
              background-color: gray;
              border-radius: 50%;
              transition: all linear 1s;
          }

          /* 当前活动分页指示器的样式 */
          .pation > .ac {
              background: skyblue;
          }

          /* 下一张按钮样式 */
          .next {
              position: absolute;
              transform: translate(0, -50%);
              top: 50%;
              right: 10px;
              font-size: 40px;
              color: white;
              cursor: pointer;
              z-index: 99;
          }

          /* 上一张按钮样式 */
          .prev {
              position: absolute;
              transform: translate(0, -50%);
              top: 50%;
              left: 10px;
              font-size: 40px;
              color: white;
              cursor: pointer;
              z-index: 99;
          }
      </style>
  </head>

  <body>
      <!-- 轮播图容器 -->
      <div class="box" onm ouseenter="stop()" onm ouseleave="start()">
          <!-- 分页指示器容器 -->
          <ul class="pation">
              <!-- 分页指示器将通过JavaScript动态添加 -->
          </ul>
          <!-- 下一张按钮 -->
          <div class="next" onclick="next()"> > </div>
          <!-- 上一张按钮 -->
          <div class="prev" onclick="prev()"> < </div>
      </div>
      <script>
          var list = [] // 存储图片元素的数组
          var parr = [] // 存储分页指示器元素的数组
          var arr = [
              "0.jpg",
              "1.jpg",
              "2.jpg",
              "3.jpg",
              "4.jpg",
          ] // 图片文件名数组
          var box = document.querySelector(".box")
          var ul = document.querySelector(".pation")

          // 遍历图片数组,创建图片和分页指示器
          arr.forEach((v, k) => {
              // 创建图片元素
              var img = document.createElement("img")
              img.src = `./beijing/${v}` // 设置图片路径
              img.className = "it"   // 添加类名
              k == 0 && img.classList.add("active") // 第一张图片添加active类
              box.appendChild(img)
              list.push(img)

              // 创建分页指示器
              var li = document.createElement("li")
              k == 0 && li.classList.add("ac") // 第一个指示器添加ac类
              li.onclick = function () {
                  i = k // 更新当前索引
                  move() // 切换到点击的图片
              }
              ul.appendChild(li)
              parr.push(li)
          })

          var i = 0 // 当前显示图片的索引

          // 切换图片的函数
          function move() {
              // 移除所有图片和指示器的活动状态
              list.forEach((v, k) => {
                  v.classList.remove("active")
                  parr[k].classList.remove("ac")
              })
              // 为当前索引的图片和指示器添加活动状态
              list[i].classList.add("active")
              parr[i].classList.add("ac")
          }

          var t = setInterval(move, 2000) // 设置自动轮播定时器

          // 开始自动轮播
          function start() {
              t = setInterval(move, 2000)
          }

          // 停止自动轮播
          function stop() {
              clearInterval(t)
          }

          // 下一张图片
          function next() {
              if (i < arr.length - 1) {
                  i++
              } else {
                  i = 0 // 循环到第一张
              }
              move()
          }

          // 上一张图片
          function prev() {
              if (i > 0) {
                  i--
              } else {
                  i = arr.length - 1 // 循环到最后一张
              }
              move()
          }
      </script>
  </body>

  </html>

标签:50%,轮播,指示器,JavaScript,li,img,使用,var,图片
From: https://blog.csdn.net/m0_69124593/article/details/140644218

相关文章

  • 使用示波器测试正弦信号步骤介绍
    示波器测试正弦信号是电子工程中的一项基础且重要的工作,它能够帮助工程师了解信号的频率、幅度、相位等关键参数。使用示波器测试正弦信号的步骤可以归纳如下:一、准备阶段1. 准备工具和设备:1. 数字示波器(或模拟示波器,但数字示波器因其精确度和便捷性更常用)。2. 信号发生器,......
  • shardingjdbc 使用记录
    注意几个概念:数据源,数据源别名(shardingjdbc的配置会给每个数据源配置别名)db实例(物理概念),逻辑库如果db实例是同一个的话,那么可以只配置一个数据源,通过shardingjdbc的路由策略来路由到具体的逻辑库。这样可以降低db的连接数。  配置了hint的路由策略,但是没有生效,断点......
  • Lazarus使用IPC收发消息
    使用IPC收发消息可以在Windows和Linux下通用。其它系统没测试。1、在system选项卡中选择TSimpleIPCServer和TSimpleIPCClient加到窗口中SimpleIPCClient1:TSimpleIPCClient;SimpleIPCServer1:TSimpleIPCServer;2、设置参数SimpleIPCServer1中设置:Global、Threaded、Act......
  • 使用MyBatis Plus需要用上的相关依赖
    1.pom.xml添加<!--MyBatisPlus依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version>......
  • 使用Velero备份、恢复的备份、恢复、迁移K8S集群上的资源
    开源地址:GitHub-vmware-tanzu/velero:BackupandmigrateKubernetesapplicationsandtheirpersistentvolumeshttps://github.com/vmware-tanzu/velero官网:https://velero.io/Velero的基本原理就是将Kubernetes集群资源对象数据备份到对象存储中,并能从对象存储中拉取......
  • Java 集合框架:HashMap 的介绍、使用、原理与源码解析
    大家好,我是栗筝i,这篇文章是我的“栗筝i的Java技术栈”专栏的第020篇文章,在“栗筝i的Java技术栈”这个专栏中我会持续为大家更新Java技术相关全套技术栈内容。专栏的主要目标是已经有一定Java开发经验,并希望进一步完善自己对整个Java技术体系来充实自己的......
  • WPF 使用ICollectionView过滤表格数据
    ICollectionView接口是一个用于提供数据视图的类,它允许你对数据进行排序、筛选和分组。可以通过静态方法CollectionViewSource.GetDefaultView(object)获取。MSDN接口说明:https://learn.microsoft.com/zh-cn/dotnet/api/system.componentmodel.icollectionview?view=windowsdes......
  • 在1Panel服务器面板中使用ClamAV防病毒引擎 轻松实现病毒扫描
    ClamAV是一款开源(GPLv2)防病毒工具包(anti-virustoolkit),能够有效检测和清除多种类型的恶意软件、病毒和钓鱼邮件,同时提供了免费且持续的病毒特征库升级。全新发布的1Panelv1.10.12-lts版本中新增了ClamAV病毒扫描功能,支持够通过图形化界面安装和使用ClamAV,并可在应......
  • Go使用HTTP的私有仓库中的模块
    Go使用HTTP的私有仓库中的模块1.导入方设置Go变量goenv-wGOPRIVATE='gitlab.xxe.example.com'goenv-wGOINSECURE='gitlab.xxe.example.com'#因为中间多了一级.xxe导致不能用通配域名2.仓库中的模块设置go.mod文件中定义模块时要附带.git后缀gomodinitgitla......
  • Android开发 - onDraw方法中canvas参数解析与使用
    drawRoundRect参数解析canvas.drawRoundRect(RectFrect,floatrx,floatry,Paintpaint):rect:RectF对象rx:x方向上的圆角半径ry:y方向上的圆角半径paint:绘制时所使用的画笔绘制圆角矩形实例实例protectedvoidonDraw(Canvascanvas){//TODOAuto-generat......