分享好友 教程首页 教程搜索 频道列表

Tab切换后加入Swiper多个轮播图

2020-07-07 21:1913290
+关注2
核心提示:Swiper对于各位前端的朋友实在是福音,不仅开源,最关键但是好用。Swiper地址:htt...
Swiper对于各位前端的朋友实在是福音,不仅开源,最关键但是好用。

Swiper地址:http://www.swiper.com.cn/

最近因为项目上的需求,需要切换两个轮播图。于是出现了一个很尴尬的问题,第一个Swiper可以正常切换,但是第二个轮播图却无法正常运行,卡顿。

检查了代码后发现问题主要来源于display:none;

我加上了这个隐藏属性后,第二个轮播一定会出问题。

最终解决方式:

1)需要加上这两个属性

observer:true,//启动动态检查器(OB/观众/观看者),当改变swiper的样式(例如隐藏/显示)或者修改swiper的子元素时,自动初始化swiper。
默认false,不开启,可以使用update()方法更新。

observeParents:true,//将observe应用于Swiper的父元素。当Swiper的父元素变化时,例如window.resize,Swiper更新

2)将display:none;这个隐藏的css换一中隐藏方式。

.hide{visibility: hidden;position: absolute;z-index: -1;height: 0;}

3)因为是有多个轮播图的,所以在实例化的时候,不能使用相同类型,最好分开。

var swiper = new Swiper('这里需要更改', {
pagination: {
el: '这里需要更改',
clickable: true,
},
});


最终实例html代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
    <title>切换轮播</title>
    <link rel="stylesheet" type="text/css" href="css/reset.css"/>
    <link rel="stylesheet" type="text/css" href="css/swiper.css"/>
    <style type="text/css">
        .hide{visibility: hidden;position: absolute;z-index: -1;height: 0;}
        .demo{width: 100%;height: 40px;border-bottom: 1px solid #ccc;overflow: hidden;}
        .demo>div{display: inline-block;width: 150px;height: 40px;line-height: 40px;text-align: center;cursor: pointer;}
        .demo2{width: 100%;height: 100px;}
        .demo2>div{position: relative;} 
        img{width:100%;height:350px;}   
        .Color{color: red !important;}
    </style>        
</head>
<body>
    <div class="demo">
        <div class="Color">左边</div>
        <div>右边</div>
    </div>
    <div class="demo2">
        <div class="Img1">
            <div class="swiper-container Img1-1">
                <div class="swiper-wrapper">
                  <div class="swiper-slide">
                    <img src="img/20150523203539_w8SeG.jpeg" alt="..."/>
                </div>
                <div class="swiper-slide">
                    <img src="img/23b58PICDUg_1024.PNG" alt="..."/>
                </div>
                <div class="swiper-slide">
                    <img src="https://g.mbkfw.com/skin/xhdtmubanskin/image/nopic.gif" alt="..."/>
                </div>
            </div>
            <!-- Add Pagination -->
            <div class="swiper-pagination Img1-2"></div>
            <!-- Add Arrows -->
            <div class="swiper-button-next Img1-3"></div>
            <div class="swiper-button-prev Img1-4"></div>
        </div>
    </div>
    <div class="Img2 hide">
        <div class="swiper-container Img2-1">
            <div class="swiper-wrapper">
              <div class="swiper-slide">
                <img src="https://g.mbkfw.com/skin/xhdtmubanskin/image/nopic.gif" alt="..."/>
            </div>
            <div class="swiper-slide">
                <img src="https://g.mbkfw.com/skin/xhdtmubanskin/image/nopic.gif" alt="..."/>
            </div>
            <div class="swiper-slide">
                <img src="https://g.mbkfw.com/skin/xhdtmubanskin/image/nopic.gif" alt="..."/>
            </div>
        </div>
        <!-- Add Pagination -->
        <div class="swiper-pagination Img2-2"></div>
        <!-- Add Arrows -->
        <div class="swiper-button-next Img2-3"></div>
        <div class="swiper-button-prev Img2-4"></div>
    </div>
</div>
</div>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script src="js/swiper.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
    $(function(){
        var swiper = new Swiper('.Img1-1', {
          spaceBetween: 10,
          centeredSlides: true,
          autoplay: {
            delay: 2500,
            disableOnInteraction: false,
        },
        pagination: {
            el: '.Img1-2',
            clickable: true,
        },
        observer:true,
        observeParents:true,
        navigation: {
            nextEl: '.Img1-3',
            prevEl: '.Img1-4',
        },
    });                 
        var swiper2 = new Swiper('.Img2-1', {
          spaceBetween: 10,
          centeredSlides: true,
          autoplay: {
            delay: 2500,
            disableOnInteraction: false,
        },
        pagination: {
            el: '.Img2-2',
            clickable: true,
        },
        observer:true,
        observeParents:true,
        navigation: {
            nextEl: '.Img2-3',
            prevEl: '.Img2-4',
        },
    }); 
        $(".demo>div").click(function(){
            var index=$(this).index();
            $(".demo2").children("div").eq(index).removeClass("hide").siblings().addClass("hide");      
            $(this).addClass("Color").siblings().removeClass("Color");                  
        });
    });
</script>
</body>
</html>


本文标签: #切换 #幻灯 #多个 #swiper
整理员:网络
免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
生成海报
您可能在找更多

前端用js实现网页换肤功能

    今天给大家分享一下js如何实现网页换肤功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获

小黑 JavaScript教程2022-09-10

解决TAB切换需拉一下才触发Lazyload懒加载方法

    处理方法就是通过给TAB绑定事件,监控TAB的切换时触发Lazyload懒加载。代码如下

小黑 PC端模板制作2022-09-03

swiper根据图片切换不同的背景色

    用代码测试

网络转载 JavaScript教程2022-05-25

关于touchslider.js滑动切换页面的使用

    需用代码测试

网络转载 移动端模板制作2022-03-19

原生js实现横向 tab 栏切换,选中项自动滚动居中

    需要用代码测试

小黑 JavaScript教程2022-03-19

下一篇
我来说两句
抢沙发