在使用vue-awesome-swiper的时候,实现这样一个功能, 点击页面的banner图(Banner.vue),进入一个图片画廊(Gallary.vue),可以查看更多相关的照片,但发现轮播图滚动效果失效
原因是:一开始Gallay.vue的所有用swiper控制的图片处于隐藏状态,直到点击才进入图片画廊显示图片。swiper其父级元素处于隐藏状态(display:none), 会导致swiper初始化失败, 页面中的滚动效果就会有问题。
Gallary.vue的结构
<template>
<div class="container" @click="handleGallaryClick">
<div class="wrapper">
<swiper :options="swiperOption">
<swiper-slide v-for="(item, index) of imgs" :key="index">
<img class="swiper-img" :src="item">
</swiper-slide>
<div class="swiper-pagination" slot="pagination"></div>
</swiper>
</div>
</div>
</template>
一开始Gallary组件都是通过父组件Banner的v-show值设置处于隐藏状态
解决办法:
通过swiper的配置项:
observer
启动动态检查器(OB/观众/观看者),当改变swiper的样式(例如隐藏/显示)或者修改swiper的子元素时observeParents
将observe应用于Swiper的父元素。当Swiper的父元素变化时,例如window.resize,Swiper更新。
data () {
return {
swiperOption: {
pagination : {
el: '.swiper-pagination',
type: 'fraction'
},
observeParents: true, //修改swiper的父元素时,自动初始化swiper
observer: true //修改swiper自己或子元素时,自动初始化swiper
}
}
},
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。