vue項(xiàng)目中導(dǎo)入swiper插件的方法
版本選擇
swiper是個(gè)常用的插件,現(xiàn)在已經(jīng)迭代到了第四代:swiper4。
常用的版本是swiper3和swiper4,我選擇的是swiper3。
安裝
安裝swiper3的最新版本3.4.2:
npm i swiper@3.4.2 -S
這里一個(gè)小知識(shí),查看node包的所有版本號(hào)的方法:
npm view 包名 versions
組件編寫
swiper官方的使用方法分為4個(gè)流程:
- 加載插件
- HTML內(nèi)容
- 給Swiper定義一個(gè)大小
- 初始化Swiper
我也按照這個(gè)流程編寫組件:
加載插件
import Swiper from 'swiper'; import 'swiper/dist/css/swiper.min.css';
HTML內(nèi)容
<template>
<div class="swiper-container">
<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>
<!-- 如果需要分頁器 -->
<div class="swiper-pagination"></div>
<!-- 如果需要導(dǎo)航按鈕 -->
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
<!-- 如果需要滾動(dòng)條 -->
<div class="swiper-scrollbar"></div>
</div>
</template>
給Swiper定義一個(gè)大小
.swiper-container {
width: 600px;
height: 300px;
}
初始化Swiper
因?yàn)閐om渲染完成才能初始化Swiper,所以必須將初始化放入vue的生命周期鉤子函數(shù)mounted中:
mounted(): {
/* eslint-disable no-new */
new Swiper('.swiper-container', {})
}
以上代碼中的/* eslint-disable no-new */是啟用的eslint代碼檢測的項(xiàng)目可以使用,如果沒有使用eslint可用使用一下代碼:
mounted(): {
var mySwiper = new Swiper('.swiper-container', {})
}
完成
將以上的代碼合并起來:
<template>
<div class="swiper-container">
<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>
<!-- 如果需要分頁器 -->
<div class="swiper-pagination"></div>
<!-- 如果需要導(dǎo)航按鈕 -->
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
<!-- 如果需要滾動(dòng)條 -->
<div class="swiper-scrollbar"></div>
</div>
</template>
<script>
import Swiper from 'swiper';
import 'swiper/dist/css/swiper.min.css';
export default {
mounted(): {
var mySwiper = new Swiper('.swiper-container', {})
}
}
</script>
<style>
.swiper-container {
width: 600px;
height: 300px;
}
</style>
運(yùn)行,你看可以實(shí)現(xiàn)輪播圖的效果了。但是到此為止只實(shí)現(xiàn)了輪播的效果,還沒有對數(shù)據(jù)的渲染。
對數(shù)據(jù)的渲染
在實(shí)際項(xiàng)目中swiper插件常用于實(shí)現(xiàn)banner圖的效果(新浪手機(jī)版):

數(shù)據(jù)的獲取
我用在vue項(xiàng)目中常用ajax插件axios來示例:
axios
.get('/user?ID=12345')
.then(function (response) {
this.imgList = response;
})
.catch(function (error) {
console.log(error);
});
將獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)規(guī)定為:
[ "https://www.baidu.com/img/baidu_jgylogo3.gif", "https://www.baidu.com/img/baidu_jgylogo3.gif", "https://www.baidu.com/img/baidu_jgylogo3.gif", "https://www.baidu.com/img/baidu_jgylogo3.gif", "https://www.baidu.com/img/baidu_jgylogo3.gif" ]
列表渲染
<template>
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="item in imgList" :style="{backgroundImage: 'url(' + item + ')'}"></div>
</div>
<!-- 如果需要分頁器 -->
<div class="swiper-pagination"></div>
<!-- 如果需要導(dǎo)航按鈕 -->
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
<!-- 如果需要滾動(dòng)條 -->
<div class="swiper-scrollbar"></div>
</div>
</template>
<style>
.swiper-slide {
width: 100%;
height: 400px;
}
<style>
到此為止已經(jīng)將數(shù)據(jù)渲染完成了,但是查看實(shí)際效果,似乎banner無法實(shí)現(xiàn)輪播圖的效果啊。這里只是將圖片渲染了出來,但是渲染出輪播圖并沒有被初始化。因?yàn)槌跏蓟呀?jīng)在生命周期mounted時(shí)完成了。
初始化
所以在獲取數(shù)據(jù)且DOM更新后,需要重新初始化swiper。
axios
.get('/user?ID=12345')
.then(function (response) {
// 獲取數(shù)據(jù)更新
this.imgList = response;
// DOM還沒有更新
this.$nextTick(() => {
// DOM更新了
// swiper重新初始化
/* eslint-disable no-new */
new Swiper('.swiper-container', {})
})
})
.catch(function (error) {
console.log(error);
});
到此,輪播圖的效果實(shí)現(xiàn)了。
總結(jié)
swiper是我們平時(shí)很常用的插件,但將swiper導(dǎo)入vue項(xiàng)目中遇到的問題不少。最主要的問題是要搞懂vue的生命周期,這樣才能有效地使用各種js插件。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Element-UI日期選擇器(選擇日期范圍)禁用未來日期實(shí)現(xiàn)代碼
我們在網(wǎng)頁開發(fā)時(shí)通常需要用到一些日期組件來方便用戶選擇時(shí)間,其中element日期組件是一個(gè)非常好用的工具,這篇文章主要給大家介紹了關(guān)于Element-UI日期選擇器(選擇日期范圍)禁用未來日期的相關(guān)資料,需要的朋友可以參考下2024-02-02
Vue 實(shí)現(xiàn)監(jiān)聽窗口關(guān)閉事件,并在窗口關(guān)閉前發(fā)送請求
這篇文章主要介紹了Vue 實(shí)現(xiàn)監(jiān)聽窗口關(guān)閉事件,并在窗口關(guān)閉前發(fā)送請求,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Vue.js 中取得后臺(tái)原生HTML字符串 原樣顯示問題的解決方法
這篇文章主要介紹了VUE.js 中取得后臺(tái)原生HTML字符串 原樣顯示問題 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
vue實(shí)現(xiàn)列表滑動(dòng)下拉加載數(shù)據(jù)的方法
文章介紹了如何使用Vue實(shí)現(xiàn)列表滑動(dòng)下拉加載數(shù)據(jù)的功能,通過監(jiān)聽滾動(dòng)事件,檢測用戶是否滾動(dòng)到底部,然后動(dòng)態(tài)加載更多數(shù)據(jù),附帶了實(shí)現(xiàn)思路和案例代碼,感興趣的朋友一起看看吧2024-11-11
基于element-ui中el-select下拉框選項(xiàng)過多的優(yōu)化方案
這篇文章主要介紹了基于element-ui中el-select下拉框選項(xiàng)過多的優(yōu)化方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
Vue與compressor.js實(shí)現(xiàn)高效文件壓縮的方法
本文將介紹基于 Vue 框架和 compressor.js 的上傳時(shí)文件壓縮實(shí)現(xiàn)方法,通過在上傳過程中對文件進(jìn)行壓縮,減小文件大小,提升上傳速度,為用戶創(chuàng)造更快捷、高效的上傳體驗(yàn),感興趣的朋友跟隨小編一起看看吧2024-03-03
vue項(xiàng)目如何監(jiān)聽localStorage或sessionStorage的變化
這篇文章主要介紹了vue 項(xiàng)目如何監(jiān)聽localStorage或sessionStorage的變化,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下2021-01-01

