一、選取合適的框架
在實現網頁輪播圖無限滾動功能之前,我們需要選取一個合適的框架來幫助我們完成這樣的效果。目前比較流行的輪播圖框架有swiper、slick、owlCarousel等。
其中,swiper是比較適合做輪播圖的輪播插件,它可以縱向、橫向、網格、標籤、縮略圖等多種樣式輪播,可隨意自定義。
以下是實現無限輪播效果的swiper代碼:
var mySwiper = new Swiper ('.swiper-container', {
loop: true,
pagination: {
el: '.swiper-pagination',
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
})
二、實現無限輪播
實現無限輪播效果需要思路清晰,具體做法是:在輪播圖的最後加上一張與第一張相同的圖片,在輪播圖的最開始一張與最後一張相同的圖片,以此來實現無限輪播的效果。
代碼如下,請注意增加的部分:
var mySwiper = new Swiper ('.swiper-container', {
loop: true, // 啟動無限滾動
pagination: {
el: '.swiper-pagination',
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
})
// 增加最後一張與第一張相同的圖片
mySwiper.appendSlide(['<div class="swiper-slide"><img src="xxx"></div>'])
// 增加最開始一張與最後一張相同的圖片
mySwiper.prependSlide(['<div class="swiper-slide"><img src="xxx"></div>'])
三、自動輪播和滑動停止自動輪播
輪播圖往往需要自動播放,這時我們需要使用swiper自帶的autoplay參數來實現自動輪播效果。
同時,在用戶手動滑動輪播圖時,我們需要停止自動輪播,可以使用swiper自帶的on-slide-change-start事件來實現。
代碼如下:
var mySwiper = new Swiper ('.swiper-container', {
autoplay: {
delay: 3000,
disableOnInteraction: false,
},
pagination: {
el: '.swiper-pagination',
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
on: {
slideChangeStart: function () {
mySwiper.autoplay.stop(); // 當手動滑動時,停止自動輪播
},
},
})
四、優化輪播圖加載速度
輪播圖往往需要預加載,以保證用戶體驗,避免出現白屏。為了提升輪播圖加載速度,我們可以使用swiper自帶的lazyload參數,它可以將圖片的加載延遲到用戶需要看到這張圖片時再加載,降低了頁面的請求量。
代碼如下:
var mySwiper = new Swiper ('.swiper-container', {
loop: true,
lazy: {
loadPrevNext: true,
loadOnTransitionStart: true,
},
pagination: {
el: '.swiper-pagination',
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
on: {
slideChangeStart: function () {
mySwiper.autoplay.stop(); // 當手動滑動時,停止自動輪播
},
},
})
五、總結
以上就是實現網頁輪播圖無限滾動功能的方法和細節。我們可以藉助現成的輪播插件,然後通過增加相同圖片來實現無限輪播。
在自動輪播和滑動停止自動輪播方面,我們需要使用swiper自帶的autoplay參數和on-slide-change-start事件,來實現在用戶手動滑動時停止自動輪播的效果。
最後,為了優化輪播圖加載速度,我們可以使用swiper自帶的lazyload參數,將圖片的加載延遲到用戶需要看到這張圖片時再加載。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/236617.html