You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

折叠面板内的Slick轮播在variableWidth设为false时失效

问题解决:Bootstrap折叠面板内Slick轮播在variableWidth: false时失效

点击Collapsible Group Item #1后,面板内的Slick轮播在设置variableWidth: false时完全失效,但将该参数改为variableWidth: true时就能正常工作。

问题原因

折叠面板初始状态是隐藏的(带有collapse类),Slick在页面加载时初始化,此时轮播容器的宽度为0。当variableWidth: false时,Slick需要依赖容器宽度自动计算每个slide的宽度,容器宽度为0会导致计算逻辑出错,轮播无法正常渲染;而variableWidth: true时,Slick会直接使用每个slide自身的宽度,不受容器初始宽度影响,因此能正常显示。

解决方案

利用Bootstrap折叠面板的shown.bs.collapse事件,在面板完全展开后,调用Slick的setPosition方法重新计算轮播的位置和尺寸:

修改后的JavaScript代码

$(function() {
    $('.step-slider-a').slick({
      slidesToShow: 4,
      slidesToScroll: 1,
      arrows: true,
      infinite: false,
      dots: false,
      variableWidth: false,
      responsive: [
        {
          breakpoint: 992,
          settings: {
            slidesToShow: 3,
          }
        },
        {
          breakpoint: 768,
          settings: {
            draggable: true,
            slidesToScroll: 1,
            slidesToShow: 1,
            centerMode: false,
            arrows: true,
            dots: false,
          }
        }
      ]
    });
    
    // 启用这段代码,在折叠面板展开后重新设置Slick布局
    $('a[data-toggle="collapse"]').on('shown.bs.collapse', function () {
      $('.step-slider-a').slick('setPosition');
    })
});

说明

shown.bs.collapse事件会在折叠面板完全展开(动画结束)后触发,此时轮播容器已经拥有正确的宽度,调用slick('setPosition')可以让Slick重新计算所有slide的尺寸和位置,彻底解决variableWidth: false时的失效问题。

内容的提问来源于stack exchange,提问作者clarkf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 08:50:01