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)文章
vue3.0中使用element UI表單遍歷校驗(yàn)問題解決
本文主要介紹了vue3.0中使用element UI表單遍歷校驗(yàn)問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04解決vue接口數(shù)據(jù)賦值給data沒有反應(yīng)的問題
今天小編就為大家分享一篇解決vue接口數(shù)據(jù)賦值給data沒有反應(yīng)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08Vue2.0使用嵌套路由實(shí)現(xiàn)頁面內(nèi)容切換/公用一級(jí)菜單控制頁面內(nèi)容切換(推薦)
這篇文章主要介紹了Vue2.0使用嵌套路由實(shí)現(xiàn)頁面內(nèi)容切換/公用一級(jí)菜單控制頁面內(nèi)容切換,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05實(shí)用的 vue tags 創(chuàng)建緩存導(dǎo)航的過程實(shí)現(xiàn)
這篇文章主要介紹了實(shí)用的 vue tags 創(chuàng)建緩存導(dǎo)航的過程實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12vue實(shí)現(xiàn)在線預(yù)覽pdf文件和下載(pdf.js)
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)在線預(yù)覽pdf文件和下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11element-ui 中使用upload多文件上傳只請求一次接口
這篇文章主要介紹了element-ui 中使用upload多文件上傳只請求一次接口,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Vue中計(jì)算屬性和監(jiān)聽屬性及數(shù)據(jù)的響應(yīng)式更新和依賴收集基本原理講解
computed是vue的配置選項(xiàng),它的值是一個(gè)對象,其中可定義多個(gè)計(jì)算屬性,每個(gè)計(jì)算屬性就是一個(gè)函數(shù),下面這篇文章主要給大家介紹了關(guān)于vue中計(jì)算屬性computed的詳細(xì)講解,需要的朋友可以參考下2023-03-03vue3使用vueup/vue-quill富文本、并限制輸入字?jǐn)?shù)的方法處理
這篇文章主要介紹了vue3使用vueup/vue-quill富文本、并限制輸入字?jǐn)?shù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03詳解無限滾動(dòng)插件vue-infinite-scroll源碼解析
這篇文章主要介紹了詳解無限滾動(dòng)插件vue-infinite-scroll源碼解析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05vue中el-table多層級(jí)嵌套的具體實(shí)現(xiàn)
本文主要介紹了vue中el-table多層級(jí)嵌套的具體實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10