效果:

代码说明:
-
Swiper初始化:
-
loop: true
:使轮播图可以循环播放。 -
navigation
:指定前后按钮的元素。 -
autoplay
:设置自动播放的延迟时间和用户交互后的行为。
-
-
事件监听:
-
为前后按钮添加点击事件监听器,点击时分别调用
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 & Saturday 8am-3pm CT"
><p
class="c-announcement__message c-b3"
title="Call 888-410-1503 x2 Mon-Fri 7am-6pm CT & 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>