使用swiper自定義分頁(yè)點(diǎn)擊跳轉(zhuǎn)指定頁(yè)面
swiper自定義分頁(yè)點(diǎn)擊跳轉(zhuǎn)指定頁(yè)面
mySwiper.slideTo(index, speed, runCallbacks),控制Swiper切換到指定slide。
| 參數(shù)名 | 類(lèi)型 | 是否必填 | 描述 |
|---|---|---|---|
| index | num | 必選 | 指定將要切換到的slide的索引 |
| speed | num | 可選 | 切換速度(單位ms) |
| runCallbacks | boolean | 可選 | 設(shè)置為false時(shí)不會(huì)觸發(fā)transition回調(diào)函數(shù) |
(更多方法見(jiàn)Swiper官網(wǎng))
效果圖如下:

<!--banner開(kāi)始-->
<div class="banner">
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide">
<img src="Static/Images/banner_1.jpg" alt="banner">
</div>
<div class="swiper-slide">
<img src="Static/Images/banner_1.jpg" alt="banner">
</div>
</div>
<div class="swiper-button-prev"></div><!--左箭頭。如果放置在swiper-container外面,需要自定義樣式。-->
<div class="swiper-button-next"></div><!--右箭頭。如果放置在swiper-container外面,需要自定義樣式。-->
<!--分頁(yè)器 -->
<div class="swiper-pagination"></div>
</div>
</div>
<script>
var mySwiper = new Swiper('.swiper-container', {
autoplay: true,//可選選項(xiàng),自動(dòng)滑動(dòng)
loop: true, // 循環(huán)模式選項(xiàng),true 循環(huán)播放
observer: true,//實(shí)時(shí)檢測(cè),動(dòng)態(tài)更新
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},//前進(jìn)后退箭頭
pagination: {//自定義分頁(yè)
el: '.swiper-pagination',
type: 'custom',
autoplayDisableOnInteraction: false,
renderCustom: function (swiper, current, total) {
var paginationHtml = " ";
for (var i = 0; i < total; i++) {
// 判斷是不是激活焦點(diǎn),是的話(huà)添加active類(lèi),不是就只添加基本樣式類(lèi)
if (i === (current - 1)) {
paginationHtml += '<span class="swiper-pagination-customs swiper-pagination-customs-active"><p class="swiper-pagination-li"></p></span>';
} else {
paginationHtml += '<span class="swiper-pagination-customs"><p class="swiper-pagination-li"></p></span>';
}
}
return paginationHtml;
},
},
});
$('.swiper-pagination').on('click','span',function(){
var index = $(this).index()+1 ;
mySwiper.slideTo(index, 1000, false)//切換到對(duì)應(yīng)的slide,速度為1秒
});
</script>
<!--banner結(jié)束-->
/*banner*/
.banner {
position: relative;
}
.swiper-container {
margin-left: auto;
margin-right: auto;
position: relative;
overflow: hidden;
list-style: none;
padding: 0;
z-index: 1;
}
.swiper-button-next, .swiper-button-prev {
position: absolute;
top: 50%;
width: 32px;
height: 32px;
margin-top: -22px;
z-index: 10;
cursor: pointer;
-moz-background-size: 27px 44px;
-webkit-background-size: 27px 44px;
background-size: cover;
background-position: center;
background-repeat: no-repeat
}
.swiper-button-next {
background-image: url("../Images/banner_right.png");
right: 10px;
}
.swiper-button-prev {
background-image: url("../Images/banner_left.png");
left: 10px;
}
.swiper-button-next.swiper-button-disabled, .swiper-button-prev.swiper-button-disabled {
opacity: .35;
cursor: auto;
pointer-events: none
}
.swiper-wrapper {
position: relative;
width: 100%;
height: 100%;
z-index: 1;
display: flex;
transition-property: transform;
box-sizing: content-box
}
.swiper-slide {
flex-shrink: 0;
width: 100%;
height: 100%;
position: relative;
transition-property: transform
}
.swiper-slide img {
width: 100%;
}
.swiper-pagination {
position: absolute;
text-align: center;
transition: .3s opacity;
transform: translate3d(0, 0, 0);
z-index: 10
}
.swiper-pagination-custom {
bottom: 12%;
left: 0;
width: 100%;
height: 20px;
text-align: center;
}
.swiper-pagination-li {
width: 6px;
height: 6px;
background-color: #fff;
position: absolute;
top: 6px;
left: 6px;
border-radius: 50%;
}
.swiper-pagination-customs {
width: 18px;
height: 18px;
display: inline-block;
cursor: pointer;
background: none;
opacity: 1;
border-radius: 50%;
margin: 0 5px;
outline: 0;
position: relative;
}
.swiper-pagination-customs-active {
opacity: 1;
border: 1px solid #fff;
background: none;
}
.banner-container {
position: absolute;
z-index: 999;
top: 25%;
left: 25%;
width: 50%;
height: 50%;
text-align: center;
color: #fff;
}
.banner-container img {
width: 80px;
height: auto;
display: table-cell;
margin: 0 auto;
}
.banner-container .big-title {
font-size: 44px;
text-transform: uppercase;
font-weight: 700;
margin-top: 16px;
}
.banner-container .small-title {
font-size: 20px;
letter-spacing: 5px;
margin: 14px 0;
}
.banner-btn {
display: flex;
justify-content: space-around;
width: 45%;
margin: 0 auto;
margin-top: 30px;
}
.banner-btn .btn {
width: 120px;
height: 36px;
border: 1px solid #fff;
line-height: 36px;
border-radius: 36px;
font-size: 14px;
transition: all 0.5s;
}
.banner-btn .btn:hover {
width: 120px;
height: 36px;
border: 1px solid #fff;
line-height: 36px;
border-radius: 36px;
font-size: 14px;
color: #000000;
background: #fff;
font-weight: 600;
cursor: pointer;
}
/*banner*/
swiper自定義分頁(yè)器
html部分
<div class="swiper-container"> ? ? ?<div class="swiper-wrapper"> ? ? ? ? <div class="swiper-slide"> ? ? ? ? ? ? <img src=""> ? ? ? ? </div> ? ? ?</div> ? ? ?<!-- 如果需要分頁(yè)器 --> ? ? ?<div class="swiper-pagination"></div> </div>
js部分
<script type="text/javascript" src="js/swiper-bundle.min.js"> </script>
?
var mySwiper = new Swiper(".swiper-container", {
? ? pagination: {
? ? ? ? el: '.swiper-pagination',
? ? ? ? clickable: true,
? ? ? ? type:'custom', ? //自定義分頁(yè)器
? ? ? ? renderCustom: function (swiper, current, total) { ?
? ? ? ? ? ? var paginationHtml = " ";
? ? ? ? ? ? for (var i = 0; i < total; i++) {
? ? ? ? ? ? ? ? ?// 判斷是不是激活焦點(diǎn),是的話(huà)添加active類(lèi),不是就只添加基本樣式類(lèi)
? ? ? ? ? ? ? ? ?if (i === (current - 1)) {
? ? ? ? ? ? ? ? ? ? ? paginationHtml += '<span class="swiper-pagination-customs swiper-pagination-customs-active" ></span>'; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ?paginationHtml += '<span class="swiper-pagination-customs" ></span>';
? ? ? ? ? ? ? ? }?? ??? ??? ??? ??? ? ?
? ? ? ? ? ? }
? ? ? ? ? ? return paginationHtml;
? ? ? ? },
? ? }
});
? ? ? ? ? ? ? ? ? ?
//點(diǎn)擊分頁(yè)器跳轉(zhuǎn)到對(duì)應(yīng)頁(yè)面
$(".swiper-pagination").on("click","span",function(){
? ? ? ? var index = $(this).index();
? ? ? ? mySwiper.slideTo(index);
})css部分
.swiper-pagination-custom {
? ? height: 34px;
? ? text-align: end !important; ?//這里設(shè)置分頁(yè)器的位置 放在行的末尾
}
/*自定義分頁(yè)器的樣式*/
.swiper-pagination-customs {
? ? width: 34px;
? ? height: 34px;
? ? display:inline-block;
? ? border-radius: 5px;
? ? margin: 0 3px;
? ? outline: 0;
? ? box-sizing: border-box;
}
.swiper-pagination-customs:last-child{
? ? margin-right: 16px;
}
/*自定義分頁(yè)器激活時(shí)的樣式表現(xiàn)*/
.swiper-pagination-customs-active {
? ? border: 2px solid #fcb916;
? ? width: 36px;
? ? height: 36px;
}解決動(dòng)態(tài)加載數(shù)據(jù)滑動(dòng)失效的問(wèn)題
1. 在swiper初始化加兩行代碼
var mySwiper = new Swiper('.swiper-container', {?
?
?observer:true,//修改swiper自己或子元素時(shí),自動(dòng)初始化swiper?
?observeParents:true//修改swiper的父元素時(shí),自動(dòng)初始化swiper?
?
});2.在數(shù)據(jù)請(qǐng)求后初始化swiper
function getMess(){
? ? globalParams = {
? ? ? ? //發(fā)送請(qǐng)求的參數(shù)
? ? }
? ? api.post2("xxx/xxx/xxx", globalParams, function(res) { ?//ajax請(qǐng)求
? ? ? ? var list = res.data.list;
? ? ? ? list.forEach((item) => {
? ? ? ? ? ? ? ? var itm = item.formModel.cgformFieldList
? ? ? ? ? ? ? ? var imgMess = itm[10].propertyLabel.split(",")
? ? ? ? ? ? ? ? var msg = "" ? ? ?// 輪播詳情
? ? ? ? ? ? ? ? imgMess.forEach((item) => {
? ? ? ? ? ? ? ? ? ? msg += `
? ? ? ? ? ? ? ? ? ? ? ? <div class="swiper-slide">
? ? ? ? ? ? ? ? ? ? ? ? ? ? <img src="https://qiniu.hollysmart.com.cn/${item}">
? ? ? ? ? ? ? ? ? ? ? ? </div>`
? ? ? ? ? ? ? ? ? ? $(".swiper-wrapper").html(msg);//動(dòng)態(tài)加載輪播項(xiàng)
?
? ? ? ? ? ? ? ? ? ? ? //初始化輪播組件
? ? ? ? ? ? ? ? ? ? var mySwiper = new Swiper(".swiper-container", {
? ? ? ? ? ? ? ? ? ? ? ? pagination: {
? ? ? ? ? ? ? ? ? ? ? ? ? ? el: '.swiper-pagination',
? ? ? ? ? ? ? ? ? ? ? ? ? ? clickable: true,
? ? ? ? ? ? ? ? ? ? ? ? ? ? type:'custom',
? ? ? ? ? ? ? ? ? ? ? ? ? ? renderCustom: function (swiper, current, total) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var paginationHtml = " ";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (var i = 0; i < total; i++) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 判斷是不是激活焦點(diǎn),是的話(huà)添加active類(lèi),不是就只添加基本樣式類(lèi)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //要求是分頁(yè)器為縮小的輪播圖片 將圖片插入到元素中
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (i === (current - 1)) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? paginationHtml +=?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '<span class="swiper-pagination-customs swiper-pagination-customs-active" >' + `<img src="https://xxx.com.cn/${imgMess[i]}">` + '</span>';
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? paginationHtml += '<span class="swiper-pagination-customs" >'+ ?`<img src="https://xxx.com.cn/${imgMess[i]}">` +'</span>';
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }?? ??? ??? ??? ??? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return paginationHtml;
? ? ? ? ? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? //點(diǎn)擊分頁(yè)器跳轉(zhuǎn)到對(duì)應(yīng)頁(yè)面
? ? ? ? ? ? ? ? ? ? $(".swiper-pagination").on("click","span",function(){
? ? ? ? ? ? ? ? ? ? ? ? var index = $(this).index();
? ? ? ? ? ? ? ? ? ? ? ? mySwiper.slideTo(index);
? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? })
? ? ? ? })
? ? })
}記錄下jquery的使用方法 ,方便后續(xù)的查看
之后運(yùn)用到vue時(shí)再繼續(xù)寫(xiě)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
學(xué)習(xí)Javascript面向?qū)ο缶幊讨庋b
這篇文章主要幫助大家學(xué)習(xí)Javascript面向?qū)ο缶幊讨庋b,由淺入深的介紹了封裝的概念定義,感興趣的小伙伴們可以參考一下2016-02-02
Javascript實(shí)現(xiàn)的Map集合工具類(lèi)完整實(shí)例
這篇文章主要介紹了Javascript實(shí)現(xiàn)的Map集合工具類(lèi),以完整實(shí)例形式分析了javascript實(shí)現(xiàn)map集合的構(gòu)造、查找、刪除、判斷等相關(guān)技巧,需要的朋友可以參考下2015-07-07
JavaScript字符串處理常見(jiàn)操作方法小結(jié)
這篇文章主要介紹了JavaScript字符串處理常見(jiàn)操作方法,結(jié)合實(shí)例形式分析了JavaScript字符串操作常見(jiàn)的轉(zhuǎn)換、截取、分割、獲取等相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-11-11
前端echarts加標(biāo)記點(diǎn)及標(biāo)記線(xiàn)和提示框詳細(xì)代碼示例
ECharts中的標(biāo)記線(xiàn)是一條平行于x軸的水平線(xiàn),有最大值、最小值、平均值等數(shù)據(jù)的標(biāo)記線(xiàn),它也是在series字段下進(jìn)行配置的,下面這篇文章主要給大家介紹了關(guān)于前端echarts加標(biāo)記點(diǎn)及標(biāo)記線(xiàn)和提示框的相關(guān)資料,需要的朋友可以參考下2024-06-06
使用JS給靜態(tài)頁(yè)面添加搜索功能的實(shí)現(xiàn)方法
靜態(tài)頁(yè)面通常由HTML、CSS 和 JavaScript 等靜態(tài)文件組成,這些文件在服務(wù)器上不會(huì)動(dòng)態(tài)生成或修改,所以加載速度通常比較快,本文給大家介紹了如何只使用JS給靜態(tài)網(wǎng)頁(yè)添加站內(nèi)全局搜索功能,文中有詳細(xì)的解決方案,需要的朋友可以參考下2023-11-11
javascript 實(shí)現(xiàn)文本使用省略號(hào)替代(超出固定高度的情況)
這篇文章主要介紹了javascript 實(shí)現(xiàn)文本使用省略號(hào)替代(超出固定高度的情況)的相關(guān)資料,需要的朋友可以參考下2017-02-02

