table要素が小さくなってスクロールで中身を確認できるようにしたかった。悩んだ挙句実はflexboxが原因だったみたいなそんな話
結論
FlexBox要素にmin-width: 0
を指定する!!
お話の流れ
Hugoのテーマを作っていて、コードブロックの箇所を「Code blocksのrender hook」を利用していい感じに表示したかった。
記事のページが下のような感じで、左側に記事の内容、右側にプロフィールとか関連記事をとかを表示する形で作っていて、左右に並べるためにFlexboxを利用している。
で、記事の内容部分に「コードブロック」を表示したいのだけど、なんか右側のFlexbox領域が狭まって表示されれているし、ウィンドウサイズが小さくなったときにはみ出るんですよね・・・
で!、ChatGPT先生やClaude教授との会話をほぼ一日中繰り返すことによって得られた結論が「FlexBox要素にmin-width: 0
を指定する!!」でした!!
ずーっと「なんでうまくいかないんだろう・・・」と一日中眺めている内に、「テーブルの要素の長さまでしかFlexbox要素が小さくならない」ということに気づき、Claude教授に確認したところ、
問題の核心: Flexboxの初期値 min-width: auto により、Flexアイテムは子要素(テーブル)の内在的な幅より小さくなることを拒否します。しかしflex-direction: columnになると、この制約が横幅には適用されなくなるため、突然スクロールが効くようになります。
との回答を頂きました・・・
長い戦いだった・・・
何より、気づけて良かった・・・
他の要素が入っている場合だといい感じに縮んでくれている感じだったのに・・・テーブルは特別な要素だったのでしょうか??
flexboxを利用して「なんかはみ出るんだけど!」という方はもしかするとこれで治るかも・・・?治るといいな・・・自分と同じ悩みを抱え続ける人が出ないように・・・!!
これはと別の話でコードブロックのシンタックスハイライトを入れようとしたらこれまで設定していたCSS設定が全部反映されなくなっちゃったりっていう問題もあるんだけどね~~トホホ~~!!
頑張りつつ(諦めつつ)いい感じにブログを作れるといいな・・・・