美文网首页
vue中使用swiper(一页显示3张图片)遇到的坑以及解决方案

vue中使用swiper(一页显示3张图片)遇到的坑以及解决方案

作者: Kernel521 | 来源:发表于2021-04-21 16:21 被阅读0次

    1. 问题

    离开当前页面后样式会重置,用户体验相当不好,注意看下图在跳转页面时swiper样式的变化
    错误.gif

    2. 原因:

    <swiper ref="mySwiper" :options="swiperOption">
      <swiper-slide v-for="(item, index) in cardList" :key="index">
        <img :src="item.imgUrl" alt />
      </swiper-slide>
    </swiper>
    
    import { Swiper, SwiperSlide } from "vue-awesome-swiper";
    import "swiper/swiper-bundle.css";
    
    export default {
      components: {
        Swiper,
        SwiperSlide
      },
      computed: {
        mySwiper() {
          return this.$refs.mySwiper.$swiper;
        }
      },
      data() {
        return {
          swiperOption: {
            direction: "horizontal",
            initialSlide: 1,
            observeParents: true,
            observer: true,
            slidesPerView: "auto",
            centeredSlides: true,
            spaceBetween: 20,
          }
        };
      }
    };
    </script>
    

    3. 方案:

    <div class="swiper-container">
      <div class="swiper-wrapper">
        <div class="swiper-slide" v-for="(item, index) in cardList" :key="index">
          <img :src="item.imgUrl" alt />
        </div>
      </div>
    </div>
    
    import Swiper from "swiper/swiper-bundle.min.js";
    import "swiper/swiper-bundle.min.css";
    
    export default {
      data() {
        mySwiper: null
      },
      mounted() {
        this.$nextTick(() => {
          this.mySwiper = new Swiper(".swiper-container", {
            direction: "horizontal",
            initialSlide: 1,
            slidesPerView: "auto",
            centeredSlides: true,
            spaceBetween: 20
          });
        });
      }
    };
    </script>
    

    4. 修改后的效果:

    请看效果,对比上面的那个图,是不是就好多了呢


    正确.gif

    相关文章

      网友评论

          本文标题:vue中使用swiper(一页显示3张图片)遇到的坑以及解决方案

          本文链接:https://www.haomeiwen.com/subject/avjzlltx.html