Swiper多级联动

最近在“大疆”的官网中看到,它在产品介绍页中运用了大量的轮播联动效果,而且效果非常好,在视觉上的体验也是给人一种产品高级的感觉。那就看看这样的联动效果是如何实现的。打开控制台,可以很明显的看到是用Swiper来做的。

https://www.dji.com/cn/zenmuse-x7?site=brandsite&from=landing_page

这里可以看到是一个控制三个地方的变化,也就是说,它用的是Swiper双向控制的思路,但不是双向控制的做法,本人认为Swiper的双向控制需要做两个容器有点麻烦了,“大疆”的做法用的是Swiper内置的一些方法来做,现就“大疆”的这种思路来写一个简单的Swiper多级联动效果。

1、引入相关插件

 <link rel="stylesheet" href="../css/swiper.css">
<script src="http://www.jq22.com/jquery/jquery-1.7.1.js"></script>
<script src="../js/swiper.js"></script>

2、编写view(界面)

<div class="box">
    <div class="swiper-container">
        <div class="swiper-wrapper">
            <div class="swiper-slide blue">slider1</div>
            <div class="swiper-slide yellow">slider2</div>
            <div class="swiper-slide red">slider3</div>
            <div class="swiper-slide green">slider4</div>
        </div>
        <div class="swiper-button-prev"></div><!--左箭头。如果放置在swiper-container外面,需要自定义样式。-->
        <div class="swiper-button-next"></div><!--右箭头。如果放置在swiper-container外面,需要自定义样式。-->
    </div>
</div>
<div class="span-title">
    <span class="show">slider1</span>
    <span>slider2</span>
    <span>slider3</span>
    <span>slider4 </span>

</div>
<div class="title">
    <div class="side"></div>
</div>
<ul class="tips">
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>

3、编写style

   *{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 500px;
            height: 500px;
            background: #000;
            margin: 0 auto;
        }
        .swiper-container{
            width: 100%;
            height: 100%;
            text-align: center;
            line-height: 500px;
            color: #ffffff;
            font-size: 50px;
        }
        .blue{
            background: #5d5aff;
        }
        .yellow{
            background: #f4eb77;
        }
        .red{
            background: #ff4e4e;
        }
        .green{
            background: green;
        }
        .title{
            width: 500px;
            height:20px;
            background: #303233;
            margin: 50px auto;
            position: relative;
        }
        .side{
            width: 25%;
            height: 100%;
            background: #ff4e4e;
            position: absolute;
            left: 0;
        }
        .span-title{
            width: 500px;
            height: 50px;
            position: relative;
            margin: 0 auto;
        }
        .span-title span{
            width: 100%;
            height: 100%;
            text-align: center;
            line-height: 50px;
            font-size: 25px;
            display: none;
        }
        .show{
            display: block!important;
        }
        .tips{
            width: 500px;
            height: 20px;
            display: flex;
            justify-content: space-between;
            margin: 0 auto;
            list-style: none;
        }
        .tips li{
            width: 23.33%;
            background: #00bebe;
            cursor: pointer;
        }

4、编写js

$(function () {
        let width = $(".side").width();
        let mySwiper = new Swiper('.box .swiper-container', {
            autoplay:false,
            loop:true,
            navigation: {
                nextEl: '.swiper-button-next',
                prevEl: '.swiper-button-prev',
            },
            on:{
                slideChange:function () {
                    let spanTitle = $(".span-title>span").eq(this.realIndex);
                    spanTitle.addClass("show").siblings().removeClass("show");
                    $(".side").animate({
                        left: width * this.realIndex
                    })
                },
            }
        });
        $(".tips li").click(function () {
           let index = $(this).index();
           mySwiper.slideToLoop(index);
        });
    })

 这里只需监听Swiper的slideChange()事件,即只要容器的内容发生变化,就触发相关的事件,从而达到联动的效果。这里的sider滚动过程是loop模式下,所以在获取Index的时候,获取的是realIndex,即loop模式的下的当前活动块索引,更多相关内容可以参考Swiper官方API文档,里面说得非常清楚。

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
swiperjs是一个非常流行的移端轮播插件,可以用来实现左右联动和上下滚的效果。 要实现左右联动上下滚,我们首先需要在HTML中创建相应的结构。可以使用一个外层容器来包裹两个swiper实例,一个用来实现左右联动,另一个用来实现上下滚。 设置左右联动swiper实例时,需要设置"direction"为"horizontal",并设置相应的宽度。可以使用CSS来控制外层容器的宽度和高度。 设置上下滚swiper实例时,需要设置"direction"为"vertical",并设置相应的高度。可以使用CSS来控制swiper的高度和样式。 在JavaScript中,我们需要初始化两个swiper实例,并设置它们的参数。可以通过"Swiper"构造函数来创建实例,并传入相应的配置参数。 对于左右联动swiper实例,我们可以添加"navigation"选项,用来显示左右箭头按钮。同时,我们还可以使用"controller"选项,将其与上下滚swiper实例进行控制关联。 对于上下滚swiper实例,我们可以添加"direction"选项,将其设置为"vertical",并可以使用"keyboard"选项来启用键盘控制。 通过上述的配置和设置,我们可以实现左右联动和上下滚的效果。用户在左右滑时,上下滚的内容也会同步变化,从而实现了左右联动上下滚的效果。 总之,通过swiperjs插件的灵活配置和丰富功能,我们可以很容易地实现左右联动和上下滚的效果,为移端的网页和应用增加交互和视觉上的吸引力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值