slick.jsの横幅が限界突破してしまう不具合、犯人はflexboxさんでした

Web関連
Web関連

備忘録です。

 

それはある日、いつものようにslick.jsを使ってスライダーを実装しようとした時のことでした。

いつもと同じはずのスライダーが・・・限界突破しとる!

 

こんなイメージです↓

 

 

 

slick.cssやslick-theme.css等のCSSを読み込み忘れた時の症状と似ているのですが、確認したところCSSは問題なく読み込んでいました。

例によってGoogle先生に助けを求めたところ、やっぱり同じ症状で困っている人がいますねぇ・・・

 

今回は以下のサイトを参考にさせて頂きました。

偉大な先人に感謝を(こいついっつも感謝してんな)。

 

[slick.js]バグってページ幅がめっちゃ長くなった場合の対処法
一発で直せる。

 

 

つまり、スライダーの親要素にdisplay: flex; が掛かっていると、レイアウトが限界突破するようです。

(display:grid; でもレイアウトが崩れるようです)

 

ソースだとこういう感じ↓

・html

<div class="container">
    <div class="content">
        <ul class="slider">
            <li class="slide-item">スライド1</li>
            <li class="slide-item">スライド2</li>
            <li class="slide-item">スライド3</li>
        </ul>
    </div>
    <aside class="sidebar">
        <p>サイドバー</p>
    </aside>
</div>

 

・css

.container {
	display: flex;
}

 

 

例としてざっくり書きましたが、このような形だと宜しくないのです。

これを回避するために、display: flex; になっている要素の子要素に以下のCSSを反映させます。

.container * {
    min-height: 0;
    min-width: 0;
}

 

 

「*」自体にCSSを記述している事例もあったのですが、さすがに全体に掛けるのは抵抗があります・・・。

かといって、「.content *」にCSSを効かせても改善しなかったので、「display: flex; にしている要素以下」にしないといけないようです。

 

前にも同じ問題で引っかかってしまったのですが、すっかり忘れていたので、今回改めて備忘録でした。

意外とこの症状にぶち当たることは少ないので、また忘れるんだろうな(笑)

タイトルとURLをコピーしました