欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue項(xiàng)目中導(dǎo)入swiper插件的方法

 更新時(shí)間:2018年01月30日 16:54:19   作者:xenowei  
這篇文章主要介紹了vue項(xiàng)目中導(dǎo)入swiper插件的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

版本選擇

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è)流程:

  1. 加載插件
  2. HTML內(nèi)容
  3. 給Swiper定義一個(gè)大小
  4. 初始化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)文章

最新評(píng)論