前端开发时slick轮播图unslick()和slickSetOption方法,解决自适应屏幕及更新属性的问题

在使用slick轮播图插件时,我们有时会有这种需求,
在某些屏幕分辨率下不使用轮播图效果,某些情况使用轮播图效果,
可以使用unslick方法,且这个方法须放入responsive中,
这样就可以确定在什么断点需要加载,哪些不需要加载。
使用方法如下。

<script>
    ('.slider').slick({
        slidesToShow: 5,
        slidesToScroll: 1,
        autoplay: false,
        autoplaySpeed: 2000,
        responsive: [
            {
                breakpoint: 9999,
                settings: "unslick"   //  在767px-9999px之间不会加载轮播图效果。
            },
            {
                breakpoint: 767,
                settings: {
                    slidesToShow: 3,
                    slidesToScroll: 3,
                    infinite: true,
                    dots: true
                }
            }
        ]
    });
</script>

当然unslick()方法也可以直接移除对于slick轮播图的绑定效果。

<script>
    if ($(".slider").hasClass('slick-initialized')) {
        $(".slider").unslick();
    }
</script>

在某些场景中,我们需要更新一些轮播图的属性,但是我们又不想去把轮播图销毁再重新出来一次,
slick插件内部有’slickSetOption’属性可供使用,更新轮播图的属性效果。

<script>

    //  旧的轮播图属性,现在我想更新一个新的属性,但是我又不想
    // 在这个方法内直接加,因为在实际开发中可能这个文件被很多其他
    // 文件引用,因此就需要slickSetOption来更新属性了。
    ('.slider').slick({
        slidesToShow: 5,
        slidesToScroll: 1,
        autoplay: false,
        autoplaySpeed: 2000
    });

    var responsiveVal = [
        {
            breakpoint: 768,
            settings:
            {
                autoplay: true
            }
        }, {
            breakpoint: 425,
            settings: {
                autoplay: true
            }
        }]

    // 对之前的slick轮播图效果进行更新
    $('.slider').slick(
        'slickSetOption',//slickSetOption属性
        'responsive',//responsive 自适应屏幕
        responsiveVal, // 断点的值   //需要注意的是,responsive这里需要添加的是一个数组对象,不是字符串。
        true  //如果是UI更新,请将refresh设置为true。
    );
</script>

以上就是我对slick轮播图插件中,关于unslick()和slickSetOption方法的记录,欢迎大家分享交流

当然slick还有很多方法和属性值可以使用。
slick的官方文档:https://kenwheeler.github.io/slick/.

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
实现轮播图可以使用第三方库,比如Swiper、Slick等,也可以自己手动编写实现。以下是一份简单的自己手写轮播图的代码: HTML部分: ```html <div class="slider"> <ul class="slider-container"> <li class="slider-item"><img src="image1.jpg"></li> <li class="slider-item"><img src="image2.jpg"></li> <li class="slider-item"><img src="image3.jpg"></li> </ul> <ul class="slider-nav"> <li class="slider-nav-item active"></li> <li class="slider-nav-item"></li> <li class="slider-nav-item"></li> </ul> </div> ``` CSS部分: ```css .slider { position: relative; width: 600px; height: 300px; overflow: hidden; } .slider-container { position: relative; width: 1800px; height: 300px; margin: 0; padding: 0; list-style: none; } .slider-item { float: left; width: 600px; height: 300px; } .slider-nav { position: absolute; bottom: 10px; left: 50%; transform: translateX(-50%); margin: 0; padding: 0; list-style: none; z-index: 10; } .slider-nav-item { display: inline-block; width: 10px; height: 10px; margin-right: 10px; border-radius: 50%; background-color: #ccc; } .slider-nav-item.active { background-color: #333; } ``` JavaScript部分: ```javascript var slider = document.querySelector('.slider'); var sliderContainer = slider.querySelector('.slider-container'); var sliderItems = slider.querySelectorAll('.slider-item'); var sliderNav = slider.querySelector('.slider-nav'); var sliderNavItems = sliderNav.querySelectorAll('.slider-nav-item'); var currentIndex = 0; var intervalId; function initSlider() { // 设置轮播图容器的宽度 sliderContainer.style.width = sliderItems.length * 100 + '%'; // 设置轮播图每一个item的宽度 for (var i = 0; i < sliderItems.length; i++) { sliderItems[i].style.width = 100 / sliderItems.length + '%'; } // 绑定导航点的click事件 for (var i = 0; i < sliderNavItems.length; i++) { sliderNavItems[i].addEventListener('click', onNavItemClick); } // 开始自动轮播 startAutoPlay(); } function onNavItemClick(event) { var navItem = event.currentTarget; var index = Array.prototype.indexOf.call(sliderNavItems, navItem); currentIndex = index; updateSlider(); } function startAutoPlay() { intervalId = setInterval(function() { currentIndex = (currentIndex + 1) % sliderItems.length; updateSlider(); }, 3000); } function stopAutoPlay() { clearInterval(intervalId); } function updateSlider() { sliderContainer.style.transform = 'translateX(-' + currentIndex * 100 / sliderItems.length + '%)'; for (var i = 0; i < sliderNavItems.length; i++) { var navItem = sliderNavItems[i]; if (i === currentIndex) { navItem.classList.add('active'); } else { navItem.classList.remove('active'); } } } initSlider(); ``` 这份代码实现了基本的轮播功能,并且提供了导航点(小圆点)供用户手动切换图片。你可以根据自己的需要进行修改和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值