6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[slick.js] バグ(不具合)の対策

Last updated at Posted at 2017-04-26

sliderの中でも一番よく使っているpluginだけどバグ・不具合っぽいのに時折ぶつかるのでメモ。
(現時点17年4月で最新verのもので確認)

1.fade + autoplayで、dotをタップするとautoplayが止まってしまう

スマホの場合のみに、fadeとautoplayを設定すると、dots(ページャー)をタップした時に
autoplayが止まってしまう。

一度この現象が起こるとその後のautoplayは動作しない模様で、例えば
一度止まって→スワイプなどではslide移動可能→それでもその後autoplayは動かない。

  • focusが取れてないのかと思ってpauseOnHoverpauseOnDotsHoverとかを無効にしてもだめ
  • fadeからsliderモードに戻すと正常に治る
  • 調べても全然情報でてこない

解決策

dotsのデフォルトclickイベントをoffして、代わりにslickGoToで代用。

let $slider = $('.slider');

//動的に作られるdotにアクセスしたいので
//init後に処理を書く
$slider.on('init', ()=>{
    let $dots = $slider.find('.slick-dots li');

    $dots
        .off('click')//デフォルトのclickを消す
        .on('click', (e)=>{
            let clickedIndex = $dots.index($(e.currentTarget));//クリックされたdotsのindex取得
            
            $slider.slick('slickGoTo', clickedIndex);//本来の動作をslickGoToで代用
        });
})

//普通にslick実行
$slider.slick({
    fade: true,
    autoplay: true,
    dots: true,
    //inifinite: true ← 無限ループにすると何故かバグる(後述)
});

注意

上記の通り、何故かinifinite:trueにすると

  • autoplayが最後まで行くと、最初へ戻ると思いきや、なぜか・・・逆ループし始める

(順次追加)

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?