最近,苦恼于各种轮播的需求,每个自己都要自己写,写的挺烦的。终于,在网上发现了swiper插件,发现还是挺实用的,但其中还是踩过了不少的坑,其中有不少都是很简单的问题,但到发现的时候都是花了不少时间,特此做个分享。
Banner轮播图1
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <title>Swiper demo</title> 6 <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"> 7 8 <!-- Link Swiper‘s CSS --> 9 <link rel="stylesheet" href="./css/swiper.min.css"> 10 11 <!-- Demo styles --> 12 <style> 13 html, body { 14 position: relative; 15 height: 100%; 16 } 17 body { 18 background: #eee; 19 font-family: Helvetica Neue, Helvetica, Arial, sans-serif; 20 font-size: 14px; 21 color:#000; 22 margin: 0; 23 padding: 0; 24 } 25 .swiper-container { 26 width: 100%; 27 height: 100%; 28 margin-left: auto; 29 margin-right: auto; 30 } 31 .swiper-slide { 32 text-align: center; 33 font-size: 18px; 34 background: #fff; 35 36 /* Center slide text vertically */ 37 display: -webkit-box; 38 display: -ms-flexbox; 39 display: -webkit-flex; 40 display: flex; 41 -webkit-box-pack: center; 42 -ms-flex-pack: center; 43 -webkit-justify-content: center; 44 justify-content: center; 45 -webkit-box-align: center; 46 -ms-flex-align: center; 47 -webkit-align-items: center; 48 align-items: center; 49 } 50 </style> 51 </head> 52 <body> 53 <!-- Swiper --> 54 <div class="swiper-container"> 55 <div class="swiper-wrapper"> 56 <div class="swiper-slide">Slide 1</div> 57 <div class="swiper-slide">Slide 2</div> 58 <div class="swiper-slide">Slide 3</div> 59 <div class="swiper-slide">Slide 4</div> 60 <div class="swiper-slide">Slide 5</div> 61 <div class="swiper-slide">Slide 6</div> 62 <div class="swiper-slide">Slide 7</div> 63 <div class="swiper-slide">Slide 8</div> 64 <div class="swiper-slide">Slide 9</div> 65 <div class="swiper-slide">Slide 10</div> 66 </div> 67 <!-- Add Pagination --> 68 <div class="swiper-pagination"></div> 69 <!-- Add Arrows --> 70 <div class="swiper-button-next"></div> 71 <div class="swiper-button-prev"></div> 72 </div> 73 74 <!-- Swiper JS --> 75 <script src="./js/swiper.js"></script> 76 77 <!-- Initialize Swiper --> 78 <script> 79 var swiper = new Swiper(‘.swiper-container‘, { 80 slidesPerView: 1, 81 spaceBetween: 30, 82 loop: true, 83 pagination: { 84 el: ‘.swiper-pagination‘, 85 clickable: true, 86 }, 87 // 开启自动切换 88 autoplay: true, 89 navigation: { 90 nextEl: ‘.swiper-button-next‘, 91 prevEl: ‘.swiper-button-prev‘, 92 }, 93 }); 94 </script> 95 </body> 96 </html>
但是,这个autoplay属性有问题,在轮播中触摸滑动之后就不在轮播,这不是我想要的。于是,我看了api文档,发现disableOnInteraction为true,用户操作swiper之后,禁止autoplay
autoplay:true 等价于 autoplay:{ delay: 3000, stopOnLastSlide: false, disableOnInteraction: true, }
一行多个slide轮播,tap切换 2
<!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="./css/swiper.min.css">
<!-- Demo styles -->
<style>
html,
body {
position: relative;
height: 100%;
}
body {
background: #eee;
font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
font-size: 14px;
color: #000;
margin: 0;
padding: 0;
}
.container {
width: 500px;
margin: 0 auto;
}
.swiper-container {
width: 500px;
height: 500px;
margin-left: auto;
margin-right: auto;
}
.swiper-slide {
text-align: center;
font-size: 18px;
background: #fff;
/* Center slide text vertically */
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
}
.tap {
display: flex;
justify-content: space-evenly;
}
.tap span {
display: inline-block;
width: 50px;
height: 50px;
border: 1px solid #000;
text-align: center;
line-height: 50px;
background-color: white;
}
.hide {
position: absolute;
visibility: hidden;
height: 0;
}
.show {
color: #e5256e;
background-color: #fff;
}
</style>
</head>
<body>
<div class="container">
<!-- Swiper -->
<div class="tap">
<span class="show">1</span>
<span>2</span>
<span>3</span>
</div>
<div id="lunbo">
<div class="img1">
<div class="swiper-container img1-1">
<div class="swiper-wrapper">
<div class="swiper-slide">Slide 1</div>
<div class="swiper-slide">Slide 2</div>
<div class="swiper-slide">Slide 3</div>
<div class="swiper-slide">Slide 4</div>
<div class="swiper-slide">Slide 5</div>
<div class="swiper-slide">Slide 6</div>
<div class="swiper-slide">Slide 7</div>
<div class="swiper-slide">Slide 8</div>
<div class="swiper-slide">Slide 9</div>
<div class="swiper-slide">Slide 10</div>
</div>
</div>
</div>
<div class="img2 hide">
<div class="swiper-container img2-1">
<div class="swiper-wrapper">
<div class="swiper-slide">Slide 21</div>
<div class="swiper-slide">Slide 22</div>
<div class="swiper-slide">Slide 23</div>
<div class="swiper-slide">Slide 24</div>
<div class="swiper-slide">Slide 25</div>
<div class="swiper-slide">Slide 26</div>
<div class="swiper-slide">Slide 27</div>
<div class="swiper-slide">Slide 28</div>
<div class="swiper-slide">Slide 29</div>
<div class="swiper-slide">Slide 210</div>
</div>
</div>
</div>
<div class="img3 hide">
<div class="swiper-container img3-1">
<div class="swiper-wrapper">
<div class="swiper-slide">Slide 31</div>
<div class="swiper-slide">Slide 32</div>
<div class="swiper-slide">Slide 33</div>
<div class="swiper-slide">Slide 34</div>
<div class="swiper-slide">Slide 35</div>
<div class="swiper-slide">Slide 36</div>
<div class="swiper-slide">Slide 37</div>
<div class="swiper-slide">Slide 38</div>
<div class="swiper-slide">Slide 39</div>
<div class="swiper-slide">Slide 310</div>
</div>
</div>
</div>
</div>
</div>
<!-- Swiper JS -->
<script src="./js/jquery.min.js"></script>
<script src="./js/swiper.js"></script>
<!-- Initialize Swiper -->
<script>
var swiper1 = new Swiper(‘.img1-1‘, {
slidesPerView: 3,
spaceBetween: 30,
loop: true,
// 开启自动切换
autoplay: {
delay: 3000,
stopOnLastSlide: false,
disableOnInteraction: false,
},
});
var swiper2 = new Swiper(‘.img2-1‘, {
slidesPerView: 3,
spaceBetween: 30,
loop: true,
// 开启自动切换
autoplay: {
delay: 3000,
stopOnLastSlide: false,
disableOnInteraction: false,
},
});
var swiper3 = new Swiper(‘.img3-1‘, {
slidesPerView: 3,
spaceBetween: 30,
loop: true,
// 开启自动切换
autoplay: {
delay: 3000,
stopOnLastSlide: false,
disableOnInteraction: false,
},
});
$(".tap span").click(function () {
var index = $(this).index();
$("#lunbo").children("div").eq(index).removeClass("hide").siblings().addClass("hide");
$(this).addClass("show").siblings().removeClass("show");
})
</script>
</body>
</html>
注意,切换多个轮播的时候,不要使用display:none,建议使用visibility: hidden。一开始使用了display:none,出现各种问题,样式变了,轮播失效,加了监视器也只是样式好了,轮播依旧失效。
匀速无缝轮播3
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <title>Swiper demo</title> 6 <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"> 7 8 <!-- Link Swiper‘s CSS --> 9 <link rel="stylesheet" href="./css/swiper.min.css"> 10 11 <!-- Demo styles --> 12 <style> 13 html, body { 14 position: relative; 15 height: 100%; 16 } 17 body { 18 background: #eee; 19 font-family: Helvetica Neue, Helvetica, Arial, sans-serif; 20 font-size: 14px; 21 color:#000; 22 margin: 0; 23 padding: 0; 24 } 25 .swiper-container { 26 width: 100%; 27 height: 100%; 28 margin-left: auto; 29 margin-right: auto; 30 } 31 .swiper-slide { 32 text-align: center; 33 font-size: 18px; 34 background: #fff; 35 36 /* Center slide text vertically */ 37 display: -webkit-box; 38 display: -ms-flexbox; 39 display: -webkit-flex; 40 display: flex; 41 -webkit-box-pack: center; 42 -ms-flex-pack: center; 43 -webkit-justify-content: center; 44 justify-content: center; 45 -webkit-box-align: center; 46 -ms-flex-align: center; 47 -webkit-align-items: center; 48 align-items: center; 49 } 50 51 .swiper-container-free-mode>.swiper-wrapper { 52 -webkit-transition-timing-function: linear; 53 -moz-transition-timing-function: linear; 54 -ms-transition-timing-function: linear; 55 -o-transition-timing-function: linear; 56 transition-timing-function: linear; 57 margin: 0 auto; 58 } 59 60 </style> 61 </head> 62 <body> 63 <!-- Swiper --> 64 <div class="swiper-container"> 65 <div class="swiper-wrapper"> 66 <div class="swiper-slide">Slide 1</div> 67 <div class="swiper-slide">Slide 2</div> 68 <div class="swiper-slide">Slide 3</div> 69 <div class="swiper-slide">Slide 4</div> 70 <div class="swiper-slide">Slide 5</div> 71 <div class="swiper-slide">Slide 6</div> 72 <div class="swiper-slide">Slide 7</div> 73 <div class="swiper-slide">Slide 8</div> 74 <div class="swiper-slide">Slide 9</div> 75 <div class="swiper-slide">Slide 10</div> 76 </div> 77 <!-- Add Pagination --> 78 <div class="swiper-pagination"></div> 79 <!-- Add Arrows --> 80 <div class="swiper-button-next"></div> 81 <div class="swiper-button-prev"></div> 82 </div> 83 84 <!-- Swiper JS --> 85 <script src="./js/swiper.js"></script> 86 87 <!-- Initialize Swiper --> 88 <script> 89 var swiper = new Swiper(‘.swiper-container‘, { 90 slidesPerView: 3, 91 spaceBetween: 30, 92 loop: true, 93 pagination: { 94 el: ‘.swiper-pagination‘, 95 clickable: true, 96 }, 97 speed:2000, 98 freeMode: true, 99 // 开启自动切换 100 autoplay:{ 101 delay: 0, 102 stopOnLastSlide: false, 103 disableOnInteraction: false, 104 }, 105 }); 106 </script> 107 </body> 108 </html>
只要delay设为0,freeMode为true,覆盖样式.swiper-container-free-mode>.swiper-wrapper即可
原文:https://www.cnblogs.com/rainwater/p/11073096.html