zoukankan      html  css  js  c++  java
  • vue |通过swiper实现动态数据的简单轮播

    做个轮播碰到了不少坑,记录一下。
    这里主要是在html的基础上用vue实现轮播功能

    CDN

    首先在lib文件夹上存放会用到的脚本,并在index文件中导入。由于图片数据是通过接口获得的,所以我这里使用了axios插件来帮助我获取数据

    <head>
        //Vue相关脚本
        <script src="./lib/vue.js"></script>
        <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
        
         //Swiper相关脚本
        <link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.css">  
        <link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css">    
        <script src="https://unpkg.com/swiper/swiper-bundle.js"> </script>  
        <script src="https://unpkg.com/swiper/swiper-bundle.min.js"> </script>
        <script src="https://unpkg.com/swiper/swiper-bundle.min.js"> </script>
    </head>
    

    创建vue实例

        <div id="app" class="main">
        </div>
    
     new Vue({
        el:'#app',
        data:{
            //存放图片数据
           picList:[],
        },
     })
    

    功能

    这里是单纯地实现轮播功能,于是我根据swiper的官方文档只用了一部分,这里面的.swiper-slide存放的是你想轮播的内容。由于我使用的是动态获取数据,于是我修改了一下

    <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>
    
    <!-- 修改后 -->
    <div class="swiper-container">
        <div class="swiper-wrapper">
            <div class="swiper-slide" v-for="(item,i) in picList" :key="i">
                <img :src="item.url">
            </div>
        </div>
    </div>
    

    接口获取数据的方法

    methods:{
        getPicList(){
            //如果你需要传参,可以在url后面加个对象`{}`,具体可以看axios官方文档
            axios.post('url')
             .then( res=> {
                //这里我过滤了url不为空的对象,使之组合成一个新的数组对象。你可以根据你自己返回的数据进行修改
                this.picList=res.data.Data.filter(item=>{
                return item.url!=="" })     
              }).catch(function (error) {
                  console.log('error');
                 });
               },
            }
    

    初始化Swiper

    //这是官方文档的写法
    var mySwiper = new Swiper ('.swiper-container', {
      direction: 'vertical', // 垂直切换选项
      loop: true, // 循环模式选项
     }) 
     
     //本实例我选择用函数包裹写在methods中,加定时器是解决loop失效的问题。其他的配置属性建议去swiper的API文档进行查看
    initSwiper(){
      setTimeout(()=>{
      var mySwiper = new Swiper ('.swiper-container', {
      loop: true,
      direction:"horizontal",
      speed:500,
      autoplay :{
           //防止拖拽后无法自动滑动
           disableOnInteraction:false,
           delay:4000
      },
      //防止拖拽后无法自动滑动
      observer:true,
      observeParents:true,
      observeSlideChildren:true,
      })  
      },300)
    
    }
    

    在生命钩子上调用接口函数和初始化函数

     mounted() {
        this.getPicList()
        this.initSwiper()
    },
    

    好啦!剩下的就是添加样式了,祝你一切顺利!

  • 相关阅读:
    pandas isin 和not in
    游戏开发需要学什么?
    打开页面,数字会自增的效果怎么弄?
    jq 导航栏点击添加/删除类(a标签跳转页面)
    bootstrap+jq分页
    2020/12/18
    2020/12/17
    2020/12/16
    2020/12/15
    2020/12/14
  • 原文地址:https://www.cnblogs.com/sanhuamao/p/13596740.html
Copyright © 2011-2022 走看看