使用Swiper组件实现轮播图的无缝衔接,且为左进右出/右进左出的效果

效果:

代码说明:

  1. Swiper初始化

    • loop: true:使轮播图可以循环播放。

    • navigation:指定前后按钮的元素。

    • autoplay:设置自动播放的延迟时间和用户交互后的行为。

  2. 事件监听

    • 为前后按钮添加点击事件监听器,点击时分别调用 swiper.slidePrev() 和 swiper.slideNext() 来切换幻灯片。

注意事项:

  • 确保你已经引入了Swiper库的CSS和JS文件。如果没有引入,你需要在HTML文件中添加以下代码:

<link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css" />
<script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>
  • 如果你使用的是Swiper的最新版本(如Swiper 8或更高版本),可能需要根据官方文档调整初始化代码。

代码如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>使用Swiper组建实现轮播图</title>
    <link
      rel="stylesheet"
      href="https://unpkg.com/swiper/swiper-bundle.min.css"
    />
    <script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>
    <style>
        button.c-announcement__btnPrev.u-hideDesktop,
        button.c-announcement__btnNext.u-hideDesktop {
          z-index: 2;
          position: absolute;
          top: 50%;
          transform:  translateY(-50%);
          background: #000;
          color: #fff;
          border: 0;
          transform-origin: top;
          width: 30px;
          height: 100%;
        }

        button.c-announcement__btnPrev.u-hideDesktop
          svg.icon.icon-caret.c-iconCaret {
          transform: rotate(90deg);
        }

        button.c-announcement__btnNext.u-hideDesktop
          svg.icon.icon-caret.c-iconCaret {
          transform: rotate(270deg);
        }

        button.c-announcement__btnPrev.u-hideDesktop {
          left: 0;
        }

        button.c-announcement__btnNext.u-hideDesktop {
          right: 0;
        }

        announcement-component .swiper-slide {
          text-align: center;
          background: #000;
        }

        announcement-component .swiper {
          background: #000;
          padding: 5px 0;
        }

        p.c-announcement__message.c-b3 {
          padding: 0;
          margin: 0;
          display: flex;
          justify-content: center;
          align-items: center;
          color: #fff;
          text-decoration: auto;
          font-size: 12px;
          font-weight: bolder;
        }

        announcement-component .swiper-slide img {
          display: block;
          width: 20px;
          height: auto;
          object-fit: cover;
          margin-right: 0.5rem;
        }

        a.c-announcement__link.link {
          text-decoration: unset;
        }

        .banner_video_box-pc {
          display: none;
        }

    </style>
  </head>
  <body>
    <announcement-component>
      <div
        class="c-announcement__slider swiper swiper-initialized swiper-horizontal swiper-backface-hidden"
        data-announcement-slider=""
      >
        <button class="c-announcement__btnPrev u-hideDesktop" data-btn-prev="">
          <svg
            class="icon icon-caret c-iconCaret"
            aria-hidden="true"
            focusable="false"
            viewBox="0 0 10 6"
          >
            <path
              fill-rule="evenodd"
              clip-rule="evenodd"
              d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z"
              fill="currentColor"
            ></path>
          </svg>
        </button>
        <div class="c-announcement__wrapper swiper-wrapper">
          <div
            class="c-announcement__slide swiper-slide swiper-slide-next"
            data-swiper-slide-index="1"
          >
            <a
              href="#"
              class="c-announcement__link link"
              title="Call 888-410-1503 x2 Mon-Fri 7am-6pm CT &amp; Saturday 8am-3pm CT"
              ><p
                class="c-announcement__message c-b3"
                title="Call 888-410-1503 x2 Mon-Fri 7am-6pm CT &amp; Saturday 8am-3pm CT"
              >
                <img
                  loading="eager"
                  src="//titan.fitness/cdn/shop/files/next-day-SML_a9e189fd-91b7-4496-8283-dd04f7c44d2f.png?v=1717535688"
                  alt="哈哈哈哈哈哈哈哈"
                  width="25"
                  height="25"
                />
                <span>哈哈哈哈哈哈哈哈</span>
              </p></a
            >
          </div>
          <div
            class="c-announcement__slide swiper-slide swiper-slide-prev"
            data-swiper-slide-index="2"
          >
            <a
              href="#"
              class="c-announcement__link link"
              title="Splitpay or financing with 0% APR* available"
              ><p
                class="c-announcement__message c-b3"
                title="Splitpay or financing with 0% APR* available"
              >
                <img
                  loading="eager"
                  src="//titan.fitness/cdn/shop/files/wallet-white.png?v=1711969245"
                  alt="钱钱钱钱钱钱钱钱"
                  width="25"
                  height="25"
                />
                <span>钱钱钱钱钱钱钱钱</span>
              </p></a
            >
          </div>
          <div
            class="c-announcement__slide swiper-slide swiper-slide-active"
            data-swiper-slide-index="0"
          >
            <a
              href="https://flybirdfitness.com/products/weight-benches-with-leg-preacher-curl"
              class="c-announcement__link link"
              title="Expedited shipping options available for a fee"
              ><p
                class="c-announcement__message c-b3"
                title="Expedited shipping options available for a fee"
              >
                <img
                  loading="eager"
                  src="//titan.fitness/cdn/shop/files/truck.png?v=1698321187"
                  alt="啦啦啦啦啦啦啦啦啦"
                  width="25"
                  height="25"
                />
                <span>啦啦啦啦啦啦啦啦啦</span>
              </p></a
            >
          </div>
        </div>
        <button class="c-announcement__btnNext u-hideDesktop" data-btn-next="">
          <svg
            class="icon icon-caret c-iconCaret"
            aria-hidden="true"
            focusable="false"
            viewBox="0 0 10 6"
          >
            <path
              fill-rule="evenodd"
              clip-rule="evenodd"
              d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z"
              fill="currentColor"
            ></path>
          </svg>
        </button>
      </div>
    </announcement-component>

    <script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>

    <script>
      document.addEventListener("DOMContentLoaded", function () {
        // 初始化Swiper
        const swiper = new Swiper(".c-announcement__slider", {
          loop: true, // 循环播放
          navigation: {
            nextEl: "[data-btn-next]", // 下一个按钮
            prevEl: "[data-btn-prev]", // 上一个按钮
          },
          //   autoplay: {
          //     delay: 3000, // 自动播放延迟时间
          //     disableOnInteraction: false, // 用户交互后不停止自动播放
          //   },
        });

        // 获取前后按钮
        const btnPrev = document.querySelector("[data-btn-prev]");
        const btnNext = document.querySelector("[data-btn-next]");

        // 添加点击事件监听器
        btnPrev.addEventListener("click", () => {
          swiper.slidePrev(); // 切换到上一个幻灯片
        });

        btnNext.addEventListener("click", () => {
          swiper.slideNext(); // 切换到下一个幻灯片
        });
      });
    </script>
  </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小奋斗♛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值