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

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

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

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

HTML:

<div class="container">
    <div class="swiper-container" id="swiper-container1">
        <div class="swiper-wrapper">
            <div class="swiper-slide active-nav">
                版块1
            </div>
            <div class="swiper-slide">
                版块2
            </div>
            <div class="swiper-slide">
                版块3
            </div>
            <div class="swiper-slide">
                版块4
            </div>
            <div class="swiper-slide">
                版块5
            </div>
            <div class="swiper-slide">
                版块6
            </div>
            <div class="swiper-slide">
                版块7
            </div>
            <div class="swiper-slide">
                版块8
            </div>
        </div>
    </div>
    <div class="swiper-container" id="swiper-container2">
        <div class="swiper-wrapper">
            <div class="swiper-slide blue-slide">slider1</div>
            <div class="swiper-slide red-slide">slider2</div>
            <div class="swiper-slide orange-slide">slider3</div>
            <div class="swiper-slide green-slide">slider4</div>
            <div class="swiper-slide pink-slide">slider5</div>
            <div class="swiper-slide blue-slide">slider6</div>
            <div class="swiper-slide red-slide">slider7</div>
            <div class="swiper-slide green-slide">slider8</div>
        </div>
    </div>
</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>

原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/231362.html

(0)
上一篇 2022年1月16日 18:51
下一篇 2022年1月16日 18:51

相关推荐

发表回复

登录后才能评论