光滑的初始宽度计算不正确

时间:2017-04-04 20:00:05

标签: slick.js

在一些情况下似乎有不正确的宽度计算,一个是如果你的光滑元素在窗口上创建一个垂直滚动条,其宽度计算偏离了17px(窗口滚动条的宽度)。

我发现了这个github问题,这与我遇到的问题完全相同:

https://github.com/kenwheeler/slick/issues/2717

我尝试触发调整大小事件来纠正它,但它似乎不起作用。我注意到当“afterChange”事件被触发时,光滑容器正确调整大小,但我不知道如何在初始加载时执行此操作。

$(element).slick({
    //slick settings
}).on('afterChange',function(event){
   //When this fires the container will resize correctly.
   //However, it fires once on initial load without resizing correctly.
}).trigger('afterChange');

我认为可能触发调整大小会起作用:

$(element).on('reInit', function(event, slick) {
    $(window).trigger('resize');
});

但它似乎没有帮助。

点击上一个/下一个导航控制柄后,每次都正确调整大小。我需要在初始加载时调用什么才能使容器正确调整大小,或者更好的是,有没有办法用任何CSS修复它?

编辑:

更多信息,如果我在光滑加载之前创建浏览器滚动条,它每次都会完全正确加载。似乎是一个奇怪的边缘情况,如果光滑是创建浏览器滚动条的元素,其宽度计算将偏离17px。

如果在初始化光滑后创建了浏览器滚动条,那么光滑会出现问题。

2 个答案:

答案 0 :(得分:2)

我找到了解决此问题的更好方法。每当您的滑块有一些宽度不准确时,请致电:

$("element")[0].slick.setPosition();

//If that doesn't work try
$("element").slick("refresh");

你的滑块应该自行纠正。如果这不起作用,您可以尝试触发调整大小,但我非常确定光滑的句柄通过调用上面的setPosition来调整大小。

答案 1 :(得分:0)

我还使用了带有超时的光滑刷新选项,并正确调整了我的图像大小。

window.addEventListener("load", () => {
   setTimeout(function(){$('.element').slick("refresh");}, 1000);
});