2017-04-04 54 views
2

似乎有在少數情況下不正確寬度的計算,其中之一是,如果你的光滑元件創建窗口上的垂直滾動條,它的寬度的計算是關閉的知識+(窗口滾動條的寬度)。油滑初始寬度計算不正確

我發現這個問題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。

看來,如果浮油已初始化後,將創建一個瀏覽器滾動條,華而不實會出現問題。

回答

1

我發現這個問題更好的解決方法。每當你的滑塊有一些寬度不準確,請致電:

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

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

而你的滑塊應該改正自己。如果這不起作用,你可以嘗試觸發一個調整大小,但我很確定通過調用setPosition像上面那樣調整大小。

0

我還使用了超時刷新選項,並正確調整了我的圖像大小。

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