光滑的旋转木马有0px的宽度,当加载在折叠标签

Slick carousel has 0px width when loaded in collapsed tab

本文关键字:加载 折叠 标签 旋转木马 0px      更新时间:2023-09-26

当在折叠内容中加载滑块时(在本例中是angular-bootstrap折叠插件),.slick-trackdiv的宽度为0px,导致滑块试图将所有幻灯片放在彼此的顶部。当按箭头键查看下一张幻灯片时,幻灯片恢复正常。如果我选择滑块并想在浏览器中检查组件,它也会恢复正常。

请看这个例子:http://plnkr.co/edit/iw9f2alEnK0HFkv1eq16?p=preview

这是我使用的光滑配置:

$(document).ready(function(){
    $('.tourImageSlider').slick({
          dots: true,
          infinite: false,
          slidesToShow: 3,
          slidesToScroll: 1,
          responsive: [
            {
              breakpoint: 1500,
              settings: {
                slidesToShow: 2,
                slidesToScroll: 1,
              }
            },
            {
              breakpoint: 1000,
              settings: {
                slidesToShow: 1,
                slidesToScroll: 1,
              }
            }]
    });
});

有谁知道怎么解决这个问题吗?

最后我得到了创造者Ken Wheeler自己的答案。当可折叠内容被触发打开时,只需调用以下行:

$('.slider-class').slick('setPosition');

…用你的滑块的类名替换"slider-class"。我个人用这一行创建了一个角函数,并使用ng-open.

触发它。

关于slick carousel无法从{display: none}或{width: 1px}这样的小宽度块中获得正确宽度的问题。

这种情况通常发生在使用样式隐藏内容时,如下例所示:

.product.data.items>.item.content~.content {
    border: 0;
    clip: rect(0,0,0,0);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
}

的想法是使用{overflow-y: hidden}和{height: 0}来隐藏内容,而不是{display: none}。标签激活后,需要为内容设置{height: auto;}

//  fix for slick carousel that initializes with zero width in collapsed tab
//  it happens in tab with {display: none;} + small width like {width: 1px;}
.tab-content-selector {
    width: 100%;
    display: block !important; // if it set to display: none by script
    overflow-y: hidden;
    height: 0;
    padding: 0 15px; // can be adjusted according to needs, but top and bottom padding must be zero
}
.tab-title-selector.active + .tab-content-selector {
    height: auto;
    padding: 10px 15px 30px; // can be adjusted according to needs
}