zoukankan      html  css  js  c++  java
  • vue-awesome-swiper使用纪实

    最近做一个项目,需要用到轮播和全屏滑动功能,所以用到了vue-awesome-swiper插件,以下为个人记录下此插件的用法。

    效果说明:

    • 上面部分是个轮播图,自动开始轮播,轮播间隔为3000ms
    • 推荐和软件是两个tab,点击可切换当前显示
    • 最下面是个可左右滑动区域,分别对应推荐和软件两个tab

    1、安装依赖

    npm install --save vue-awesome-swiper

    2、引入组件和样式

    //App.vue
    <script>
    import 'swiper/dist/css/swiper.css'
    import {swiper,swiperSlide} from 'vue-awesome-swiper'
    export default {
      name: 'App',
      components: {
        swiper,
        swiperSlide
      },
    }
    </script

    3、使用swiper和swiperSlide组件

      <div class="swiper-container swiper-container1">
            <swiper class="swiper-wrapper" :options="bannerOptions" ref="bannerSwiper">
                <swiper-slide class="swiper-slide">
                    <img class="container1-img" src="./assets/logo.png" />
                </swiper-slide>
                <swiper-slide class="swiper-slide">
                    <img class="container1-img" src="./assets/logo.png" />
                </swiper-slide>
            </swiper>
        </div>
      <ul id="myMenu" class="menu-nav">
        <li class="active" @click="changeTab(0)">推荐</li>
        <li @click="changeTab(1)">软件</li>
      </ul>

    <div class="swiper-container swiper-container2"> <swiper class="swiper-wrapper" :options="swiperOptions" ref="mySwiper"> <swiper-slide class="swiper-slide section"> <div class="content-slide"> <div class="section-list"> <header>下载最多</header> <div class="list"> <div class="list-img"> <img src="./assets/logo.png" /> </div> <div class="list-desc"> <p class="title">淘宝</p> <div class="star" v-if="num == 5"> <span class="light"></span> <span class="light"></span> <span class="light"></span> <span class="light"></span> <span class="light"></span> <span class="size">54.13MB</span> </div> <div class="star" v-if="num == 4"> <span class="light"></span> <span class="light"></span> <span class="light"></span> <span class="light"></span> <span class="dark"></span> <span class="size">54.13MB</span> </div> <p class="desc">新人领388元购物礼包</p> </div> <div class="list-download"> <a href="">下载</a> </div> </div> </div> </div> </swiper-slide> <swiper-slide class="swiper-slide section"> <div class="content-slide"> <div class="section-list"> <header>本周最热</header> <div class="list"> <div class="list-img"> <img src="./assets/logo.png" /> </div> <div class="list-desc"> <p class="title">淘宝</p> <div class="star"> <span class="light"></span> <span class="light"></span> <span class="light"></span> <span class="light"></span> <span class="dark"></span> <span class="size">54.13MB</span> </div> <p class="desc">新人领388元购物礼包</p> </div> <div class="list-download"> <a href="">下载</a> </div> </div> </div> </div> </swiper-slide> </swiper> </div>

    4、配置options选项

    export default {
      name: 'App',
      components: {
        swiper,
        swiperSlide
      },
      data() {
        return {
          num: 5,
          bannerOptions: {
            speed: 300,
            autoplay: true
          },
          swiperOptions: {
            notNextTick: true,
            autoHeight: true
          }
        }
      }
    }

    5、实现左右滑动分别对应推荐和软件两个tab显示,则首先要拿到swiper这个对象

    computed: {
        swiper() {
          return this.$refs.mySwiper.swiper
        }
      },

    第一步:推荐和软件tab的点击使swiper区域滑动

    methods: {
        changeTab(i) {
          let ul = document.getElementById('myMenu');
          let li = ul.getElementsByTagName('li');
          for (let index = 0; index < li.length; index++) {             
              li[index].className = ''
          }
          li[i].className = 'active'
          this.swiper.slideTo(i,500,false)
        },
    }

    第二步:左右滑动使tab样式改变

    swiperOptions: {
            notNextTick: true,
            autoHeight: true,
            on: {
              slideChangeTransitionEnd(){
                console.log(this.activeIndex)
                let i = this.activeIndex;
                let ul = document.getElementById('myMenu');
                let li = ul.getElementsByTagName('li');
                for (let index = 0; index < li.length; index++) {             
                    li[index].className = ''
                }
                li[i].className = 'active'
              }
            }
          }

    6、综述

    以上就可以实现我想要的效果。我所配置的选项比较少,如果你需要多项选项配置,可以去看swiper中文网,里面有更详细的配置。

  • 相关阅读:
    [原创]RTX使用printf输出后进入hardfault中断的处理方法
    [原创]单片机 HexToStr and HexToBcd BcdToStr
    [原创]单片机-HexToStr or HexToAsc
    再看 AspriseOCR
    [源创] STM32F103ZET6 基于XMODEM 通讯的 BOOTLOADER案列IAP
    单片机串口——如何判定接收一帧数据的完成
    [原创] 关于步科eview人机界面HMI的使用
    [原创] STM32 定时器TIMx 编码器应用 函数 TIM_EncoderInterfaceConfig 分析
    单片机的 HexToStr HexToBcd BcdToStr 几个转换函数
    [转载] 全局键盘钩子(WH_KEYBOARD)
  • 原文地址:https://www.cnblogs.com/zengfp/p/9766272.html
Copyright © 2011-2022 走看看