• vue-13-swiper组件的使用


    vue-13-swiper

    是一个滑动库, 非常丰富的滑动样式, 轮播图等

    https://www.swiper.com.cn
    https://github.com/surmon-china/vue-awesome-swiper
    

    1, 基本

    1.1) 安装

    npm install vue-awesome-swiper --save
    

    1.2) 全局引用

    css 单独引入, 在swiper3 中干掉了, 但反应不好, 所以在swiper4 中又加了回来

    import Vue from 'vue'
    import VueAwesomeSwiper from 'vue-awesome-swiper'
    
    // require styles
    import 'swiper/dist/css/swiper.css'
    
    Vue.use(VueAwesomeSwiper, /* { default global options } */)
    

    1.3) 局部引入

    // require styles
    import 'swiper/dist/css/swiper.css'
    
    import { swiper, swiperSlide } from 'vue-awesome-swiper'
    
    export default {
      components: {
        swiper,
        swiperSlide
      }
    }
    

    2. 使用

    2.1) 静态数据的使用 (使用方式很少)

    <template>
      <swiper :options="swiperOption" ref="mySwiper" @someSwiperEvent="callback">
        <!-- slides -->
        <swiper-slide>I'm Slide 1</swiper-slide>
        <swiper-slide>I'm Slide 2</swiper-slide>
        <swiper-slide>I'm Slide 3</swiper-slide>
        <swiper-slide>I'm Slide 4</swiper-slide>
        <swiper-slide>I'm Slide 5</swiper-slide>
        <swiper-slide>I'm Slide 6</swiper-slide>
        <swiper-slide>I'm Slide 7</swiper-slide>
        <!-- Optional controls -->
        <div class="swiper-pagination"  slot="pagination"></div>
        <div class="swiper-button-prev" slot="button-prev"></div>
        <div class="swiper-button-next" slot="button-next"></div>
        <div class="swiper-scrollbar"   slot="scrollbar"></div>
      </swiper>
    </template>
    
    <script>
      export default {
        name: 'carrousel',
        data() {
          return {
            swiperOption: {
              // some swiper options/callbacks
              // 所有的参数同 swiper 官方 api 参数
              // ...
            }
          }
        },
        computed: {
          swiper() {
            return this.$refs.mySwiper.swiper
          }
        },
        mounted() {
          // current swiper instance
          // 然后你就可以使用当前上下文内的swiper对象去做你想做的事了
          console.log('this is current swiper instance object', this.swiper)
          this.swiper.slideTo(3, 1000, false)
        }
      }
    </script>
    

    2.2) 动态数据的引用

    需要在 main.js中引入

    // 使用 ssr的方式
    if (process.browser) {
      const VueAwesomeSwiper = require('vue-awesome-swiper/dist/ssr')
      Vue.use(VueAwesomeSwiper)
    }
    

    然后在使用

    <template>
    
      <div>
        ssr的写法
    
        <div v-swiper:mySwiper="swiperOption" @someSwiperEvent="callback">
          <div class="swiper-wrapper">
            <div class="swiper-slide" v-for="banner in banners">
              <img :src="banner">
            </div>
          </div>
          <div class="swiper-pagination"></div>
        </div>
    
      </div>
    
    </template>
    
    <script>
      export default {
        name: "SSR-saiper",
        data () {
          return {
            banners: [
              'https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=2889938252,3793206744&fm=173&app=25&f=JPEG?w=639&h=424&s=A5D1AB66CC0937744EE54C120100C092',
              'https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=2889938252,3793206744&fm=173&app=25&f=JPEG?w=639&h=424&s=A5D1AB66CC0937744EE54C120100C092',
              'https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=2889938252,3793206744&fm=173&app=25&f=JPEG?w=639&h=424&s=A5D1AB66CC0937744EE54C120100C092' ],
            swiperOption: {
              pagination: {
                el: '.swiper-pagination',
                autoplay: true,
              },
              // some swiper options...
            },
            mounted() {
              setTimeout(() => {
                this.banners.push('/4.jpg')
                console.log('banners update')
              }, 3000)
              console.log(
                'This is current swiper instance object', this.mySwiper,
                'It will slideTo banners 3')
              this.mySwiper.slideTo(3, 1000, false)
            }
          }
        },
      }
    </script>
    
    <style scoped>
    
    </style>
    

    本地图片需要 require

    require("../assets/slideShow/j1.jpg"),
    				require("../assets/slideShow/j2.jpg"),
    				require("../assets/slideShow/j3.jpg"),
    				require("../assets/slideShow/j4.jpg")
    

    2.3) 异步数据的使用

    数据使用异步的方式进行加载

    <template>
    
      <div>
        spa 的方式 使用 swiper, 写死的
        <swiper :options="swiperOption">
          <swiper-slide v-for="(slidee, index) in swiperSlides" :key="index">
            <img v-bind:src="slidee"/>
          </swiper-slide>
          <div class="swiper-pagination" slot="pagination"></div>
        </swiper>
    
      </div>
    
    </template>
    
    <script>
      export default {
        name: "SPA-swiper",
        data() {
          return {
            swiperOption: {
              pagination: {
                el: '.swiper-pagination',
                autoplay: true,
              }
            },
            swiperSlides: [
              'https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=2889938252,3793206744&fm=173&app=25&f=JPEG?w=639&h=424&s=A5D1AB66CC0937744EE54C120100C092',
              'https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=2889938252,3793206744&fm=173&app=25&f=JPEG?w=639&h=424&s=A5D1AB66CC0937744EE54C120100C092',
              'https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=2889938252,3793206744&fm=173&app=25&f=JPEG?w=639&h=424&s=A5D1AB66CC0937744EE54C120100C092',
              'https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=2889938252,3793206744&fm=173&app=25&f=JPEG?w=639&h=424&s=A5D1AB66CC0937744EE54C120100C092',
              'https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=2889938252,3793206744&fm=173&app=25&f=JPEG?w=639&h=424&s=A5D1AB66CC0937744EE54C120100C092',
            ]
          }
        },
        mounted() {
          setInterval(() => {
            console.log('simulate async data')
            if (this.swiperSlides.length < 10) {
              this.swiperSlides.push(this.swiperSlides.length + 1)
            }
          }, 3000)
        }
    
      }
    </script>
    
    <style scoped>
    
    </style>
    

    添加其他的属性:

    swiperOption: {
              pagination: {
                el: '.swiper-pagination',
                autoplay: true,
              },
              effect : 'coverflow',
              slidesPerView: 3,
              centeredSlides: true,
            },
            mounted() {
    
            }
    
  • 相关阅读:
    简易的设计模式——观察者模式
    简易的设计模式——桥梁模式
    static与并发
    如何编写优雅的代码:04. 设计模式(中)
    如何编写优雅的代码:03. 设计模式(上)
    如何编写优雅的代码:02. 设计原则
    如何编写优雅的代码:01. 概述
    .Net平台互操作技术:03. 技术验证
    .Net平台互操作技术:02. 技术介绍
    .Net平台互操作技术:01. 主要问题
  • 原文地址:https://www.cnblogs.com/wenbronk/p/9736949.html
Copyright © 2020-2023  润新知