最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue使用Swiper的案例詳解

 更新時(shí)間:2022年06月22日 12:01:24   作者:Tyler Yue  
這篇文章主要介紹了Vue使用Swiper的案例詳解,主要包括引入swiper,創(chuàng)建輪播圖組件CarouselContainer.vue的詳細(xì)代碼,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下

Vue使用Swiper看這一篇就夠了

此案例實(shí)現(xiàn)需求

  • 完成swiper動(dòng)態(tài)異步數(shù)據(jù)下的slide渲染
  • 自定義分頁器樣式
  • 解決loop:true設(shè)置時(shí)的事件丟失問題
  • swiper鼠標(biāo)移入/移出 暫停/開始輪播
  • 單頁面渲染多個(gè)swiper組件互不影響

1、引入swiper

npm i swiper@5.2.0

2、創(chuàng)建輪播圖組件CarouselContainer.vue,詳細(xì)解析在代碼注釋中

<template>
  <div class="CarouselContainer" @mouseenter="stopAutoPlay" @mouseleave="startAutoPlay">
    <div ref="mySwiper" class="swiper-container" :id="currentIndex"  >
      <div class="swiper-wrapper">
        <div class="swiper-slide my-swiper-slide" v-for="(item,index) of slideList" :key="index">{{item.name}}</div>
      </div>
      <!-- 分頁器 -->
      <div class="swiper-pagination"></div>
      <!--導(dǎo)航器-->
      <div class="swiper-button-prev"></div>
      <div class="swiper-button-next"></div>
    </div>
  </div>
</template>
<script>
import Swiper from 'swiper'
import "swiper/css/swiper.css";
export default {
  name: 'CarouselContainer',
  props: ['slideList','currentIndex'],
  data(){
    return {
      currentSwiper:null,
    }
  },
  watch:{
    //slide數(shù)據(jù)發(fā)生變化時(shí),更新swiper
    slideList:{
      deep:true,
      // eslint-disable-next-line
      handler(nv,ov){
        console.log("數(shù)據(jù)更新了")
        this.updateSwiper()
      }
    }
  },
  mounted() {
    this.initSwiper()
  },
  methods:{
    //鼠標(biāo)移入暫停自動(dòng)播放
    stopAutoPlay() {
       this.currentSwiper.autoplay.stop()
    },
    //鼠標(biāo)移出開始自動(dòng)播放
    startAutoPlay() {
      this.currentSwiper.autoplay.start()
    },
    //初始化swiper
    initSwiper(){
      // eslint-disable-next-line
      let vueComponent=this//獲取vue組件實(shí)例
      //一個(gè)頁面有多個(gè)swiper實(shí)例時(shí),為了不互相影響,綁定容器用不同值或變量綁定
      this.currentSwiper = new Swiper('#'+this.currentIndex, {
        loop: true, // 循環(huán)模式選項(xiàng)
        autoHeight:'true',//開啟自適應(yīng)高度,容器高度由slide高度決定
        //分頁器
        pagination: {
          el: '.swiper-pagination',
          clickable:true,//分頁器按鈕可點(diǎn)擊
        },
        on: {
          //此處this為swiper實(shí)例
          //切換結(jié)束獲取slide真實(shí)下標(biāo)
          slideChangeTransitionEnd: function(){
            console.log(vueComponent.$props.currentIndex+"號swiper實(shí)例真實(shí)下標(biāo)",this.realIndex)
          },
          //綁定點(diǎn)擊事件,解決loop:true時(shí)事件丟失
          // eslint-disable-next-line
          click: function(event){
            console.log("你點(diǎn)擊了"+vueComponent.$props.currentIndex+"號swiper組件")
          }
        },
        //導(dǎo)航器
        navigation: {
          nextEl: '.swiper-button-next',
          prevEl: '.swiper-button-prev',
        },
        autoplay: {
          //自動(dòng)播放,不同版本配置方式不同
          delay: 3000,
          stopOnLastSlide: false,
          disableOnInteraction: false
        },
        slidesPerView: 1, //視口展示slide數(shù)1
        slidesPerGroup: 1, //slide數(shù)1頁一組
      })

    },
    //銷毀swiper
    destroySwiper(){
        try {
          this.currentSwiper.destroy(true,false)
        }catch (e) {
          console.log("刪除輪播")
        }
    },
    //更新swiper
    updateSwiper(){
      this.destroySwiper()
      this.$nextTick(()=>{
        this.initSwiper()
      })
    },
  },
  destroyed() {
    this.destroySwiper()
  }
}
</script>
<style scoped>
  .CarouselContainer{
    background-color: gray;
  }
  /*slide樣式*/
  .my-swiper-slide{
    height: 300px;
    background-color: pink;
  }
  /*swiper容器樣式*/
  .swiper-container {
    width: 700px;
    border: 1px solid red;
  }
  /*自定義分頁器按鈕被點(diǎn)擊選中時(shí)的樣式*/
  /deep/.swiper-pagination-bullet-active{
    background-color: #d5a72f !important;
    width: 20px;
  }
  /*自定義分頁器按鈕常規(guī)樣式*/
  /deep/.swiper-pagination-bullet{
    background-color: #9624bf;
    opacity: 1;
    width: 20px;
  }
</style>

3、創(chuàng)建父組件App.vue渲染多個(gè)swiper組件、模擬異步數(shù)據(jù)變化

<template>
  <div id="app">
    <!--傳遞不同的currentIndex 作為區(qū)分不同swiper組件的動(dòng)態(tài)id-->
    <CarouselContainer :slide-list="list" currentIndex="1"></CarouselContainer>
    <CarouselContainer :slide-list="list" currentIndex="2"></CarouselContainer>
  </div>
</template>
<script>
import CarouselContainer from './components/CarouselContainer.vue'
export default {
  name: 'App',
  components: {
    CarouselContainer,
  },
  data(){
    return{
      list:[
        {name:"aaa"},
        {name:"bbb"},
        {name:"ccc"},
      ]
    }
  },
  mounted() {
    let self=this
    //延時(shí)模擬兩次數(shù)據(jù)變化
    setTimeout(()=>{
      let obj={name:"ddd"}
      self.list.push(obj)
    },5000)
    setTimeout(()=>{
      let obj={name:"eee"}
      self.list[0].name="AAA"
      self.list.push(obj)
    },8000)
  }
}
</script>
<style scoped>
</style>

只需要這兩個(gè)文件就可以vue項(xiàng)目中運(yùn)行demo查看效果了

到此這篇關(guān)于Vue使用Swiper看這一篇就夠了的文章就介紹到這了,更多相關(guān)Vue使用Swiper內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue框架之goods組件開發(fā)詳解

    Vue框架之goods組件開發(fā)詳解

    這篇文章主要介紹了Vue框架之goodvs組件開發(fā)詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Element InputNumber 計(jì)數(shù)器的實(shí)現(xiàn)示例

    Element InputNumber 計(jì)數(shù)器的實(shí)現(xiàn)示例

    這篇文章主要介紹了Element InputNumber 計(jì)數(shù)器的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • vue實(shí)現(xiàn)氣泡運(yùn)動(dòng)撞擊效果

    vue實(shí)現(xiàn)氣泡運(yùn)動(dòng)撞擊效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)氣泡運(yùn)動(dòng)撞擊效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • element table多層嵌套顯示的實(shí)踐

    element table多層嵌套顯示的實(shí)踐

    本文主要介紹了element table多層嵌套顯示的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Vue?3?表單與后端數(shù)據(jù)交互之查詢并回顯數(shù)據(jù)步驟流程

    Vue?3?表單與后端數(shù)據(jù)交互之查詢并回顯數(shù)據(jù)步驟流程

    本文給大家介紹Vue3表單與后端數(shù)據(jù)交互之查詢并回顯數(shù)據(jù)步驟流程,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • vue在使用ECharts時(shí)的異步更新和數(shù)據(jù)加載詳解

    vue在使用ECharts時(shí)的異步更新和數(shù)據(jù)加載詳解

    這篇文章主要給大家介紹了關(guān)于vue在使用ECharts時(shí)的異步更新和數(shù)據(jù)加載的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Vue自定義指令學(xué)習(xí)及應(yīng)用詳解

    Vue自定義指令學(xué)習(xí)及應(yīng)用詳解

    這篇文章主要為大家詳細(xì)介紹了Vue中自定義指令的學(xué)習(xí)以及如何利用Vue制作一個(gè)簡單的學(xué)生信息管理系統(tǒng),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-05-05
  • vuex中store存儲(chǔ)store.commit和store.dispatch的用法

    vuex中store存儲(chǔ)store.commit和store.dispatch的用法

    這篇文章主要介紹了vuex中store存儲(chǔ)store.commit和store.dispatch的用法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 關(guān)于vue-router路徑計(jì)算問題

    關(guān)于vue-router路徑計(jì)算問題

    這篇文章主要介紹了關(guān)于vue-router路徑計(jì)算問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • 使用Vue3實(shí)現(xiàn)羊了個(gè)羊的算法

    使用Vue3實(shí)現(xiàn)羊了個(gè)羊的算法

    這篇文章主要介紹了使用Vue3實(shí)現(xiàn)羊了個(gè)羊的算法,初始化的隨機(jī)位置算法,通過實(shí)例代碼介紹了計(jì)算偏移量的方法,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09

最新評論

桐柏县| 武隆县| 类乌齐县| 南溪县| 柘城县| 昌黎县| 留坝县| 拉孜县| 天门市| 宁津县| 酉阳| 丰都县| 玉田县| 勃利县| 曲水县| 武胜县| 安龙县| 黄大仙区| 两当县| 诏安县| 绥中县| 枣强县| 定西市| 曲周县| 通州市| 沛县| 响水县| 大安市| 康保县| 景谷| 兴义市| 高陵县| 华安县| 疏附县| 库车县| 香格里拉县| 珠海市| 页游| 清丰县| 包头市| 井冈山市|