在vue项目中使用v-show控制元素隐藏导致swiper的轮播图及分页无法正常显示

一、需求问题

在之前的项目开发中,使用了swiper插件。由于是vue项目,对于swiper的轮播图我们使用了v-show命令,进行动态隐藏与显示。只有当点击进行一些操作以后,swiper的轮播图才会显示出来。但是,在使用v-show命令以后,swiper的轮播图显示和分页不正常,样式出现问题,无法正常显示。

二、需求分析

swiper的配置中,我们一开始进行配置了paginationpaginationTypepagination的配置是分页器容器的CSS选择器或HTML标签,paginationType的配置是分页器样式类型。但是,一旦使用v-show以后,就会出现问题。我们可以先配置observeParents,这样将observe应用于Swiper的父元素,Swiper的父元素变化时,Swiper也会及时更新。然后再配置启动动态检查器,当改变swiper的样式,比如隐藏或者显示,以及修改swiper的子元素时,自动初始化swiper。通过这两个设置,就可以完美解决这种问题了。

三、需求实现

  1. 实例代码显示如下:
<template>
    <div class="container" @click="handleClick">
        <div class="wrapper">
            <swiper :options="swiperOptions">
                <swiper-slide v-for="(item,index) of imgs" :key="index">
                    <img  class="gallary-img" :src="item" />
                </swiper-slide>
                <div class="swiper-pagination"  slot="pagination"></div>
            </swiper>
        </div>
    </div>
</template>

<script>
export default {
  name: 'CommonGallary',
  data () {
    return {
      swiperOptions: {
        pagination: '.swiper-pagination',
        paginationType: 'fraction',
        observeParents: true,
        observer: true
      }
    }
  },
  props: {
    imgs: {
      type: Array,
      default () { return [] }
    }
  },
  methods: {
    handleClick () {
      this.$emit('close')
    }
  }
}
</script>

<style lang="stylus" scoped>
    .container >>> .swiper-container
        overflow: inherit
    .container
        display: flex
        flex-direction: column
        justify-content: center
        z-index: 99
        position: fixed
        left: 0
        right: 0
        top: 0
        bottom: 0
        background: #000
        .wrapper
            height: 0
            width: 100%
            padding-bottom: 100%
            .gallary-img
                width: 100%
            .swiper-pagination
                color : #fff
                bottom: -1rem
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值