swiper滑动时整个页面可以触发swipeleft事件的解决办法

今天再开发项目的过程中使用了swiper组件,遇到一个挺奇葩的现象。

一 问题描述

页面如下图所示,上方是一个正常的banner,使用swiper组件实现的,下面是一个list的列表。出现的问题是:当上面轮播的banner滑动到第二页的时候,用手滑动下面的list,整个页面都跟着左滑或者右滑。


二 解决思路

出现上述问题后,第一时间觉得有可能是滑动的过程中父类的高度变化导致上面banner的高度被撑开到页面高度。但是查看元素高度根本就没有变化。

再接着注释掉上面的banner,发现页面不能左滑或者右滑了,所以确定是上面swiper引起的。

然后再仔细看了一下初始化swiper的代码,好像并没有什么异常。

mySwiper_banner = new Swiper('.swiper-container_banner', {
            pagination: '.swiper-container_banner .swiper-pagination',
            paginationClickable: true,
            loop: true,
            speed: 400,
            spaceBetween: 0,
            observer: true,
            observeParents: true,
            autoplayDisableOnInteraction: false,
            touchMoveStopPropagation: true,
            autoplay: 4000,
            onTouchEnd: function(){
            },
            onTap:function(swiper,event){
                //some code
            }
          });
<div class="swiper-container_banner">
    <ul class="swiper-wrapper"></ul>
    <div class="swiper-pagination"></div>
</div>

打开swiper官方文档,查看初始化部分。


首先,初始化的时候要有一个字符串类型的选择器,这个对比上述实现发现没什么问题。然后下面说如果有多个swiper,要保留默认的类名swiper-container。到这里才想起来当前页面是单页面应用,其他很多地方也使用了swiper,但是刚才的html中为了避免冲突直接取了类名swiper-container_club,没有默认的类名swiper-container。默认的这个类名在swiper的css和js文件中有很多默认的样式和行为

最后,在html中添加上默认的类名解决了问题。


猜你喜欢

转载自blog.csdn.net/u010176097/article/details/80973043
今日推荐