swiper宽度超出后自动适应的tab关联切换导航

今天需要写一个 tab 切换,上面一个可以左右滑动,点击上面的 tab 块,下面的跟着切换。

swiper.png swiper宽度超出后自动适应的tab关联切换导航 经验总结

其实 swiper 就可以实现,代码如下:

HTML:

  1. <div class="container">
  2.     <div class="swiper-container" id="swiper-container1">
  3.         <div class="swiper-wrapper">
  4.             <div class="swiper-slide active-nav">
  5.                 版块1
  6.             </div>
  7.             <div class="swiper-slide">
  8.                 版块2
  9.             </div>
  10.             <div class="swiper-slide">
  11.                 版块3
  12.             </div>
  13.             <div class="swiper-slide">
  14.                 版块4
  15.             </div>
  16.             <div class="swiper-slide">
  17.                 版块5
  18.             </div>
  19.             <div class="swiper-slide">
  20.                 版块6
  21.             </div>
  22.             <div class="swiper-slide">
  23.                 版块7
  24.             </div>
  25.             <div class="swiper-slide">
  26.                 版块8
  27.             </div>
  28.         </div>
  29.     </div>
  30.     <div class="swiper-container" id="swiper-container2">
  31.         <div class="swiper-wrapper">
  32.             <div class="swiper-slide blue-slide">slider1</div>
  33.             <div class="swiper-slide red-slide">slider2</div>
  34.             <div class="swiper-slide orange-slide">slider3</div>
  35.             <div class="swiper-slide green-slide">slider4</div>
  36.             <div class="swiper-slide pink-slide">slider5</div>
  37.             <div class="swiper-slide blue-slide">slider6</div>
  38.             <div class="swiper-slide red-slide">slider7</div>
  39.             <div class="swiper-slide green-slide">slider8</div>
  40.         </div>
  41.     </div>
  42. </div>

JS:

<script>
    var mySwiper1 = new Swiper('#swiper-container1', {
        watchSlidesProgress: true,
        watchSlidesVisibility: true,
        slideToClickedSlide: true,//点击跟随滑动
        slidesPerView: 4.5,//一屏显示的个数
        onTap: function () {
            mySwiper2.slideTo(mySwiper1.clickedIndex)
        }
    })
    var mySwiper2 = new Swiper('#swiper-container2', {
        onSlideChangeStart: function () {
            updateNavPosition()
        }
    })

    function updateNavPosition() {
        $('#swiper-container1 .active-nav').removeClass('active-nav')
        var activeNav = $('#swiper-container1 .swiper-slide').eq(mySwiper2.activeIndex).addClass('active-nav');
        console.log(activeNav.index())
        if (!activeNav.hasClass('swiper-slide-visible')) {
            if (activeNav.index() > mySwiper1.activeIndex) {
                var thumbsPerNav = Math.floor(mySwiper1.width / activeNav.width()) - 1
                console.log(thumbsPerNav.index())
                mySwiper1.slideTo(activeNav.index() - thumbsPerNav)
            } else {
                mySwiper1.slideTo(activeNav.index())
            }
        }
    }
</script>


赞 (1)
分享到: +

评论 沙发

Avatar

换个身份

  • 昵称 (必填)
  • 邮箱 (选填)