什么是swiper
- Swiper是纯javascript打造的滑动特效插件,面向手机、平板电脑等移动终端。
- Swiper能实现触屏焦点图、触屏Tab切换、触屏轮播图切换等常用效果。
- Swiper开源、免费、稳定、使用简单、功能强大,是架构移动终端网站的重要选择!
了解详情请查看swiper官网
下面是使用代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 在 head 中引入 Swiper CSS -->
<link rel="stylesheet" href="https://unpkg.com/swiper@11.0.5/swiper-bundle.min.css">
<!-- 在 body 末尾引入 Swiper JS -->
<script src="https://unpkg.com/swiper@11.0.5/swiper-bundle.min.js"></script>
<style>
/* 容器基础样式 */
.swiper {
width: 100%;
height: 400px;
}
.swiper-button-prev,
.swiper-button-next {
background-color: #000 !important;
/* 黑色背景 */
border-radius: 50% !important;
/* 圆形效果 */
width: 40px !important;
/* 按钮尺寸 */
height: 40px !important;
transition: 0.3s;
/* 过渡动画 */
}
/* 修改箭头颜色为白色 */
.swiper-button-prev::after,
.swiper-button-next::after {
color: #fff !important;
/* 白色箭头 */
font-size: 20px !important;
/* 调整箭头大小 */
}
/* 悬停效果 */
.swiper-button-prev:hover,
.swiper-button-next:hover {
background-color: #333 !important;
}
</style>
</head>
<body>
<!-- 轮播图容器 -->
<div class="swiper">
<div class="swiper-wrapper">
<!-- 轮播项(图片可替换为任意内容) -->
<div class="swiper-slide"><img src="../day15/assets/carousel1.png" alt=""></div>
<div class="swiper-slide"><img src="../day15/assets/carousel2.png" alt=""></div>
<div class="swiper-slide"><img src="../day15/assets/carousel3.png" alt=""></div>
</div>
<!-- 导航按钮(可选) -->
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
<!-- 分页器(可选) -->
<div class="swiper-pagination"></div>
</div>
<script>
const swiper = new Swiper('.swiper', {
// 核心配置
loop: true, // 无缝循环 [6,7](@ref)
speed: 3000, // 切换动画时长(单位ms)
autoplay: {
delay: 3000, // 自动播放间隔(单位ms)
disableOnInteraction: false // 用户操作后仍自动播放
},
// 分页器配置
pagination: {
el: '.swiper-pagination',
clickable: true // 分页器可点击切换
},
// 导航按钮配置
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev'
},
});
</script>
</body>
</html>
对于底部分页的修改
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>官方爆料</title>
<link rel="stylesheet" href="../../css/announce/announce.css">
<link rel="stylesheet" href="../../node_modules/swiper/swiper-bundle.min.css">
</head>
<style>
// 轮播图分页器
.swiper-pagination{
/* 把绝对定位改为相对定位 这样就会贴着上面的轮播图 显示分页器 */
position: relative;
margin: 0;
height: 13px;
width: 100%;
margin-bottom: 22px;
.swiper-pagination-bullet{
background-color: #931919;
/* 这个不透明度必须加 这样你的轮播图才可实现分页器不选中的颜色是什么 */
opacity: 1;
margin:0 5px;
height: 1px;
width: 27px;
/* 去除圆角变成条形 */
border-radius: 0;
}
.swiper-pagination-bullet-active{
/* 修改激活颜色*/
background-color: #c39b5e;
}
}
</style>
<body>
<!-- 轮播图 -->
<div class="banner">
<div class="swiper">
<div class="swiper-wrapper">
<div class="swiper-slide">
<img src="../../assets/announce/carousel/1.jpg" />
</div>
<div class="swiper-slide">
<img src="../../assets/announce/carousel/2.webp" />
</div>
<div class="swiper-slide">
<img src="../../assets/announce/carousel/3.webp" />
</div>
</div>
</div>
<div class="swiper-pagination"></div>
</div>
<script src="../../node_modules/swiper/swiper-bundle.min.js"></script>
<script>
const swiper = new Swiper('.swiper', {
// 核心配置
loop: true, // 无缝循环 [6,7](@ref)
speed: 3000, // 切换动画时长(单位ms)
autoplay: {
delay: 3000, // 自动播放间隔(单位ms)
disableOnInteraction: false // 用户操作后仍自动播放
},
// 分页器配置
pagination: {
el: '.swiper-pagination',
clickable: true // 分页器可点击切换
},
// 导航按钮配置
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev'
},
});
</script>
</body>
</html>
仿无畏契约
可以参考我的源码
gitee仓库源码无畏契约
使用版本swiper11
目录如下
图片可用其他图片替换
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Swiper demo</title>
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" />
<!-- Link Swiper's CSS -->
<link rel="stylesheet" href="./swiper/swiper-bundle.min.css" />
<!-- Demo styles -->
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.bg3 {
background: url(./imgs/bg.webp) no-repeat;
width: 100%;
height: 100vh;
background-size: cover;
background-position: center;
position: relative;
}
.contain {
position: absolute;
background: url(./imgs/weapon-bg.png) no-repeat 0 center /contain;
height: 600px;
width: 1250px;
font-size: 14px;
/* color: #000; */
left: 150px;
top: 60px;
margin: 0;
padding: 0;
/* background: #000; */
}
.swiper {
width: 100%;
height: 300px;
margin-left: auto;
margin-right: auto;
}
.swiper-slide {
text-align: center;
font-size: 18px;
/* background: #fff; */
background: #ece8e1;
display: flex;
justify-content: center;
align-items: center;
}
.swiper-slide img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
.swiper-slide {
background-size: cover;
background-position: center;
}
/* .swiper {
width: 100%;
height: 300px;
margin-left: auto;
margin-right: auto;
}
*/
/* 显示 */
.mySwiper2 {
height: 80%;
width: 70%;
position: absolute;
left: 0;
top: 0;
}
.mySwiper2 .swiper-slide {
position: relative;
background: transparent;
}
.mySwiper2 .swiper-slide .mask{
position: absolute;
left: 0;
bottom: 0;
width: 100px;
height: 100px;
background-color: pink;
}
/* .swiper {
width: 100%;
height: 300px;
margin-left: auto;
margin-right: auto;
}
*/
/* 底部 */
.mySwiper {
/* height: 20%; */
height: 600px;
width: 300px;
box-sizing: border-box;
padding: 10px 0;
/* */
position: absolute;
right: 0;
top: 0;
background: transparent;
}
/* .mySwiper .swiper-wrapper{
display: flex;
flex-direction: column;
} */
/* 底部 */
.mySwiper .swiper-slide {
width: 100%;
height: 100%;
/* opacity: 0.4; */
}
.mySwiper .swiper-slide span {
position: absolute;
display: inline-block;
left: 6px;
bottom: 6px;
font-size: 13px;
}
/* 底部 */
.mySwiper .swiper-slide-thumb-active {
opacity: 1;
}
/* 所有 */
.swiper-slide img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
/* background: ; */
}
</style>
</head>
<body>
<div class="bg3">
<div class="contain">
<!-- Swiper -->
<div style="--swiper-navigation-color: #802727; --swiper-pagination-color: #fff" class="swiper mySwiper2">
<div class="swiper-wrapper">
<div class="swiper-slide">
<img src="./imgs/1.webp" />
<div class="mask">了解更多</div>
</div>
<div class="swiper-slide">
<img src="./imgs/2.webp" />
<div class="mask">了解更多</div>
</div>
<div class="swiper-slide">
<img src="./imgs/3.webp" />
<div class="mask">了解更多</div>
</div>
<div class="swiper-slide">
<img src="./imgs/4.webp" />
<div class="mask">了解更多</div>
</div>
<div class="swiper-slide">
<img src="./imgs/5.webp" />
<div class="mask">了解更多</div>
</div>
</div>
<!-- <div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div> -->
</div>
<!-- 底部 -->
<div thumbsSlider="" class="swiper mySwiper">
<div class="swiper-wrapper">
<div class="swiper-slide">
<img src="./imgs/1.webp" />
<span>短炮</span>
</div>
<div class="swiper-slide">
<img src="./imgs/2.webp" />
<span>短炮</span>
</div>
<div class="swiper-slide">
<img src="./imgs/3.webp" />
<span>短炮</span>
</div>
<div class="swiper-slide">
<img src="./imgs/4.webp" />
<span>短炮</span>
</div>
<div class="swiper-slide">
<img src="./imgs/5.webp" />
<span>短炮</span>
</div>
</div>
</div>
</div>
</div>
<!-- Swiper JS -->
<script src="./swiper/swiper-bundle.min.js"></script>
<!-- Initialize Swiper -->
<script>
// 底部
var swiper = new Swiper(".mySwiper", {
direction: 'vertical',
spaceBetween: 10,
slidesPerView: 4,
freeMode: true,
watchSlidesProgress: true,
on: {
// 点击事件添加背景
click: function (swiper, event) {
// alert('事件触发了;');
var slides = swiper.slides;
slides.forEach(function (slide) {
slide.style.background = '';
});
var clickedSlide = event.target.closest('.swiper-slide');
if (clickedSlide) {
clickedSlide.style.background = "url(./imgs/select.webp)";
}
},
slideChange: function () {
}
},
});
// 初始化,刚刚进入页面,默认显示第一张图片
if (swiper.slides.length > 0) {
swiper.slides[0].style.backgroundImage = "url(./imgs/select.webp)";
}
// 上部
var swiper2 = new Swiper(".mySwiper2", {
spaceBetween: 10,
// 垂直
direction: 'vertical',
effect: "fade",
// 淡入淡出效果的配置选项,不要覆盖
fadeEffect: {
crossFade: true, // 启用交叉淡入淡出效果
},
// navigation: {
// nextEl: ".swiper-button-next",
// prevEl: ".swiper-button-prev",
// },
// 不允许触碰翻页
allowTouchMove: false,
thumbs: {
swiper: swiper,
},
});
</script>
</body>
</html>