Swiper实现轮播效果

news2025/4/8 22:53:47

swiper官网:https://3.swiper.com.cn/

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://unpkg.com/swiper@8/swiper-bundle.min.css"
    />
    <script src="https://unpkg.com/swiper@8/swiper-bundle.min.js"></script>
  </head>
  <style>
    .swiper {
      width: 620px;
      height: 720px;
    }

    /* 左右箭头 */
    .swiper-button-prev:after {
      display: none;
    }
    .swiper-button-prev {
      background: url("./image/left-1.png");
      background-size: contain;
      background-repeat: no-repeat;
      width: 110px;
      height: 120px;
      left: 5px;
    }
    .swiper-button-next:after {
      display: none;
    }
    .swiper-button-next {
      background: url("./image/right-1.png");
      background-size: contain;
      background-repeat: no-repeat;
      width: 110px;
      height: 120px;
      right: 0px;
      z-index: 999;
      position: absolute;
    }

    /* 图片显示 */
    .swiper-slide {
      display: flex;
      justify-content: center;
      align-items: center;
    }
    .swiper-slide img {
      width: 300px;
    }
    .swiper-slide-active img {
      position: absolute;
      width: 395px;
      transition: width 0.5s;
    }
    .swiper-slide-next img {
      position: absolute;
      left: -230px;
    }
    .swiper-slide-prev img {
      position: absolute;
      right: -230px;
    }
    .swiper-slide-active {
      z-index: 999;
    }
    .swiper-slide-next {
      z-index: 888;
    }
    .swiper-slide-prev {
      z-index: 888;
    }
    .bullet-style {
      width: 0px;
      height: 0px;
      border: 6px solid black;
      background-color: black;
      background-clip: padding-box;
      transform: rotateZ(45deg);
      display: inline-block;
      margin: 0 8px;
      cursor: pointer;
    }
    .bullet-style:hover {
      border-color: gray;
      background-color: gray;
    }
    .bullet-style-active {
      border-style: double;
      border-width: 8px;
    }
  </style>
  <body>
    <div class="swiper">
      <div class="swiper-wrapper">
        <div class="swiper-slide">
          <img src="./image/world-3-3-1.png" />
        </div>
        <div class="swiper-slide">
          <img src="./image/world-4-4-1.png" />
        </div>
        <div class="swiper-slide">
          <img src="./image/world-2-2-1.png" />
        </div>
      </div>
      <!-- 分页器 -->
      <div class="swiper-pagination"></div>

      <!--前进后退按钮 -->
      <div class="swiper-button-prev"></div>
      <div class="swiper-button-next"></div>
    </div>
    <!-- <div class="swiper-button-next swiper-button-black"></div> -->
    <script type="module">
      import Swiper from "https://unpkg.com/swiper@8/swiper-bundle.esm.browser.min.js";
      let addBullentsEvent = () => {};
      const mySwiper = new Swiper(".swiper", {
        loop: true, // 循环模式选项
        // 分页器
        pagination: {
          el: ".swiper-pagination",
          clickable: true,
          // 自定义分页其样式
          type: "custom",
          renderCustom: function (swiper, current, total) {
            let renderHTML = "";
            for (let i = 0; i < total; i++) {
              if (i + 1 == current) {
                renderHTML += `<div class="bullet-style bullet-style-active"></div>`;
              } else {
                renderHTML += `<div class="bullet-style"></div>`;
              }
            }
            return renderHTML;
          },
        },
        // 前进后退按钮
        navigation: {
          nextEl: ".swiper-button-next",
          prevEl: ".swiper-button-prev",
        },

        slidesPerView: 2, //设置slider容器能够同时显示的slides数量
        spaceBetween: 80, //slide之间的距离(单位px)
        centeredSlides: true, //设定为true时,active slide会居中,而不是默认状态下的居左。
        observer: true, //修改swiper自己或子元素时,重新加载
        observeParents: true, //修改swiper的父元素时,重新加载
        centerInsufficientSlides: true, //当slides 的总数小于 slidesPerView 时,slides居中。
        autoplay: {
          delay: 3000, //3秒切换一次
        },

        // 事件

        on: {
          paginationRender: function () {
            console.log("分页器渲染了");
            // 重新添加事件
            addBullentsEvent();
          },
          autoplayStart: function () {
            console.log("开始自定切换");
          },
          autoplayStop: function () {
            console.log("关闭自动切换");
          },
        },
      });

      addBullentsEvent = () => {
        const bullents = document.getElementsByClassName("bullet-style");
        for (let i = 0; i < bullents.length; i++) {
          console.log("obj.onclick", bullents[i].onclick);
          bullents[i].removeEventListener("click", () => {});
          bullents[i].addEventListener("click", function () {
            mySwiper.slideTo(i + 2); //切换到对应的slide,速度为1秒
            mySwiper.autoplay.start();
          });
        }
      };

      window.addEventListener("load", () => {
        addBullentsEvent();
        document
          .getElementsByClassName("swiper-button-next")[0]
          .addEventListener("click", () => {
            mySwiper.autoplay.start();
          });
        document
          .getElementsByClassName("swiper-button-prev")[0]
          .addEventListener("click", () => {
            mySwiper.autoplay.start();
          });
      });
    </script>
  </body>
</html>

效果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1479302.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 之三:发布订阅(pub/sub)

概念介绍 Redis 发布订阅 (pub/sub) 是一种消息通信模式&#xff0c;它允许客户端之间进行异步的消息传递 Redis 客户端可以订阅任意数量的频道。 模型中的角色 在该模型中&#xff0c;有三种角色&#xff1a; 发布者&#xff08;Publisher&#xff09;&#xff1a;负责发送信…

【DIY】TA7376组成的耳机放大电路

用头戴式耳机&#xff0c;尤其是小型耳机听音乐&#xff0c;总感到音乐味不够足&#xff0c;在低频段的效果更差。因此用本机增强耳机的低频特性&#xff0c;并采用立体声反相合成的办法&#xff0c;加上内藏简易矩阵环绕声电路&#xff0c;能获得强劲的低音和在较宽的范围内展…

使用Node.js构建一个简单的聊天机器人

当谈到人工智能&#xff0c;我们往往会想到什么&#xff1f;是智能语音助手、自动回复机器人等。在前端开发领域中&#xff0c;我们也可以利用Node.js来构建一个简单而有趣的聊天机器人。本文将带你一步步实现一个基于Node.js的聊天机器人&#xff0c;并了解其工作原理。 首先…

http模块学习

http模块 客户端&#xff1a;负责消费资源的电脑 服务器&#xff1a;负责对外提供网络资源的电脑&#xff0c;与普通电脑的区别就在于服务器上 安装了web服务器软件。 http模块是Node.js官方提供用来 创建web服务器的模块&#xff0c;通过http模块提供的http.createServer()方…

WPS/Office 好用的Word插件-查找替换

例如&#xff1a;一片文档&#xff1a;…………泰山…………泰&#xff08;少打了山字&#xff09;………… 要是把“泰”查找替换为“泰山”&#xff0c;就会把前面的“泰山”变成“泰山山”&#xff0c;这种问题除了再把“泰山山”查找替换为“泰山”&#xff0c;有没有更简单…

1978-2022年各省农业总产值数据(无缺失)

1978-2022年各省农业总产值数据(无缺失) 1、时间&#xff1a;1978-2022年 2、范围&#xff1a;包括全国31省 3、来源&#xff1a;国家统计J、统计NJ、各省NJ 4、指标解释&#xff1a;农业总产值是一定时期&#xff08;通常为一年&#xff09;内以货币形式表现的农、林、牧、…

RK3568平台开发系列讲解(基础篇)文件私有数据

🚀返回专栏总目录 文章目录 一、文件私有数据二、文件私有数据实验沉淀、分享、成长,让自己和他人都能有所收获!😄 一、文件私有数据 Linux 中并没有明确规定要使用文件私有数据,但是在 linux 驱动源码中,广泛使用了文件私有数据,这是 Linux 驱动遵循的“潜规则”,实…

【三、接口协议与抓包】使用TcpDump + WireShark抓包分析三次握手与四次挥手

你好啊&#xff01;我是山茶&#xff0c;一个持续探索 AI 测试之路的程序员。 对于三次握手与四次挥手的理解与基本讲解如下。 那么具体的请求是什么样的呢&#xff1f;使用 TCPDump WireShark 对 TCP 三次握手与四次挥手展示 协议分析工具 网络监听&#xff1a;TcpDump Wi…

Centos中安装Docker及Docker的使用

在centos7系统中安装指定版本的docker,并通过docker使用安装mysql为例,阐述docker的使用。 2.1、Docker卸载及安装yum依赖 【卸载Docker,如果安装的Docker的版本不合适】 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-…

探索口袋中的远程控制神器

在这个科技日新月异的时代&#xff0c;我们的生活被各种手机软件所包围。几乎每个人都有一个甚至多个手机&#xff0c;你是否也有遇到过需要远程操作自己某一台手机的场景呢&#xff1f;今天&#xff0c;我要向大家推荐一款神奇的手机远程操作神器&#xff0c;让你可以随时随地…

旧版android模拟器,37岁程序员被裁

前言 从18年毕业至今&#xff0c;就职过两家公司&#xff0c;大大小小项目做了几个&#xff0c;非常感谢我的两位老大&#xff0c;在我的android成长路上给予我很多指导&#xff0c;亦师亦友的关系。 从年前至今参加面试了很多公司&#xff0c;也收到了几家巨头的offer&#…

对齐了之后才舒服,matplotlib文字和字体设置

文章目录 text方法字体局部字体 matplotlib教程&#xff1a; 初步&#x1f4c8; 子图绘制&#x1f4c8; 坐标投影&#x1f4c8; 刻度设置&#x1f4c8; 共享坐标轴&#x1f4c8; 内容填充 text方法 【plt】提供了文字显示函数text&#xff0c;包含三个必不可少的参数&am…

【VSCODE修改代码行间距】解决方案

在我们编码的过程中&#xff0c;由于显示字体和显示器的不同&#xff0c;会需要调整行间距&#xff0c;在vscode默认的选项中没有看到设定行间距的选项&#xff0c;不过&#xff0c;可以手动修改配置档达到目的。 1.打开设置 2.打开配置档&#xff0c;手动进行设定 3.在选项中添…

Vue3自定义文件列表页面(含上传、搜索、复制链接)

文章目录 一、代码展示二、代码解读三、结果展示 一、代码展示 <template><div class"container"><h1>文件列表</h1><div class"header-actions"><a-input placeholder"输入关键词搜索" v-model:value"…

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(一)

ACM9238 高速双通道ADC模块自助服务手册AD9238 一、实验目的 本次实验通过电脑上的网络调试助手&#xff0c;将命令帧进行发送&#xff0c;然后通过ACZ7015开发板上的以太网芯片接收&#xff0c;随后将接收到的数据转换成命令&#xff0c;从而实现对ACM9238模块采样频率、数据…

Java配置48-nginx 按照日期生成日志

1. 背景 默认情况下&#xff0c;nginx 的日志会一直输入到 access.log&#xff0c;长时间运行后会导致这个日志文件过大。 2. 方法 修改 nginx.conf map $time_iso8601 $logdate {~^(?<ymd>\d{4}-\d{2}-\d{2}) $ymd;default date-not-found;}access_log logs/acce…

用vivado创建一个赛灵思AXI的IP核

一、新建一个管理IP的任务 二、设置板子&#xff0c;verilog语言和文件位置 三、创建新的IP核 添加一个axi-full的master接口和axi-full的slave接口 四、查看赛灵思AXI代码 第一个是axi的master接口代码&#xff0c;下面的是axi的slave接口代码 五、打包IP核以供后续使用 六、…

【C语言基础】:深入理解指针(一)

文章目录 一、内存和地址1. 内存2. 如何理解编址 二、指针变量和地址2.1 取地址操作符(&)2.2 指针变量和解引用操作符(*)2.2.1 指针变量2.2.2 如何拆解指针变量2.2.3 解引用操作符 2.3 指针变量的大小 三、指针变量类型的意义3.1 指针的解引用3.2 指针 - 整数3.3 void*指针…

企业级指针仪表读数YOLOV8NANO

企业级指针仪表读数&#xff0c;采用YOLOV8NANO训练&#xff0c;检测表盘和表芯&#xff0c;得到PT模型&#xff0c;然后转换ONNX&#xff0c;让OPENCV调用。然后提取表芯区域&#xff0c;通过极坐标转换为直角坐标&#xff0c;再通过检测指针和刻度&#xff0c;换算成比例&…

【k8s管理--Helm包管理器】

1、Helm的概念 Kubernetes包管器 Helm是查找、分享和使用软件构件Kubernetes的最优方式。 Helm管理名为chart的Kubernetes包的工具。Helm可以做以下的事情&#xff1a; 从头开始创建新的chat将chart打包成归档tgz)文件与存储chat的仓库进行交互在现有的Kubernetes集群中安装和…