Slickでスライダーの高さが揃わない原因

公開日
最終更新日
slickスライダーで各スライドの高さを揃える

slick.jsでテキストコンテンツのスライダーを実装すると、各スライドの文章量の違いによって、スライドごとの高さがバラバラになってしまいます。これはslick.cssが各スライド(.slick-slide)にheight: 100%を指定しているためで、中身の高さに合わせて伸縮せず、見た目が不揃いになります。

結論から言うと、CSSを数行追加するだけで、すべてのスライドを一番高いスライドに揃えられます。JavaScriptの設定変更は不要です。

CSSで高さを揃える方法

以下のCSSを追加します。

.slick-track {
  display: flex;
}
.slick-slide {
  height: auto !important;
}

やっていることは2つです。まず、各スライドの親要素である.slick-trackdisplay: flexを指定します。Flexboxの子要素は、デフォルトで一番背の高い要素に高さが揃う(align-items: stretch)ため、これだけでスライド同士の高さが揃います。

次に、.slick-slideheight: auto !importantです。前述の通りslick.cssheight: 100%を効かせているので、これを!importantで上書きし、中身に応じた高さに戻してやります。この2つを組み合わせることで、全スライドが最も高いスライドに合わせて統一されます。

補足:注意点

この方法はFlexboxを使うため、.slick-track内に他の要素構成がある場合はレイアウトが崩れないか確認してください。また、slickはjQueryに依存するライブラリです。すでに稼働中のサイトで使う分には問題ありませんが、新規実装でjQueryを避けたい場合は、Swiperなど別のスライダーライブラリも検討する価値があります。

IPPEI FUKUTA(株式会社バッズブルー 代表)

IPPEI FUKUTA(株式会社バッズブルー 代表)

WordPress専門のWeb制作者として15年・150サイト以上を担当。現場でつまずいた問題と解決策を、同じ制作者・フリーランスの方に向けて発信しています。無料のWeb便利ツール集「バドツール」を開発・運営中。