投稿日
更新日
fit-contentを使ったテキストの中央寄せ
margin-inlineとの組み合わせで、レスポンシブデザインでよくある状況をスマートに解決します。
text-alignを使った中央寄せの問題
ビューポートが狭くなり折り返しが発生する場合、見た目が不格好になってしまうことです。 そのため、メディアクエリでtext-align
をleft
に戻す指定が必要になってしまいます。 レスポンシブデザインでは、よくある状況だと思います。
text-align: center;
を使った、問題のあるコードの記述例があります。
fit-contentを知る
fit-content
とは、最小寸法・最大寸法がコンテンツの寸法になる指定です。 inline-block
の様に、対象の内容量に沿った寸法になります。
MDNからのfit-content
の概要の引用
width
,height
,min-width
,min-height
,max-width
,max-height
のレイアウトされたボックスの大きさとして使用される場合、最大寸法と最小寸法は、コンテンツの寸法を参照します。
fit-contentの何が良いのか
text-align
での問題点を解消することができます。 テキストの位置を変更していないので、不格好になることもありません。 文字の面位置が揃って綺麗です。
fit-contentを使ったコード
メディアクエリが無くなり、記述量も少なくなりました。 論理プロパティで記述していますが、通常のプロパティで書いても問題ありません。
inline-size: fit-content;
を使った、スマートなコードの記述例があります。
通常のプロパティを使ったコード
通常のプロパティでの書き方はこちらです。
margin-inline
を使わない、通常のコードの記述例があります。
margin-inlineを巡る議論
margin-inline
はmargin-(left|right)
と同じではありません。 書字方向における指定になるので、そのことは念頭に置いて利用するべきだと思います。
Xからの引用ツイート
前記事で要素のセンタリングにmargin-inline:auto紹介したら「margin-inlineは左右のショートハンドじゃねぇ!」ってマサカリめっちゃ飛んできたけど、そういう人に限ってアプローチは違えど同じく論理的に要素をセンタリングするjustify-content:centerに対して何も疑問を抱かないのは何でだろう🤔
MDNにmargin-inline
について分かりやすいサンプルがあります。
おわりに
fit-content
を使うと、レスポンシブデザインでよくある状況をスマートに解決することができます。 ただ、margin-inline
を合わせて使う場合は、書字方向による指定であることを念頭に置くべきだと思います。 以上になります。
margin
の指定でショートハンドを使うかはよく考えましょう。 水平方向をauto
にしたいがために、ショートハンドでmargin: 0 auto;
と書いているのを見かけます。 本当に垂直方向を0
にしていいのかは考えましょう。 個別の指定の方が副作用が起こりにくいです。