親要素の幅を中身に合わせるなら fit-conetnt

親要素の幅を中身に合わせるなら fit-conetnt
Image by Willi Heidelbach from Pixabay

2022.10.07(更新日:2022.10.07)

レスポンシブでコーディングしていると「中身に合わせて幅はが可変するブロック要素」なんて都合のいいことを求める場合が以外と多い。当然面倒になるが子要素にもう1つ要素をかませてなんとかしていた。
こんなことをしなくとも、親要素に指定するだけで面倒を解決出来る「fit-content」なんて言うのがあるんだな。
と言うことでメモ程度に記事にする。

この記事は1年以上経過しています。内容的に古い場合があります。

fit-conetntの有用性を例で比較説明

多いのが「タイトル部分の文字がある部分のみに背景やマーカーの装飾しセンター揃えにする」例え。
すぐ思い浮かぶ方法は、文字部分をタグ(span)で内包するコーディング。

/* HTML */
<h1><span>この文字の部分だけ地色を付けたい。センター揃えで。</span></h1>
/* CSS */
h1 { text-align: center; }
h1 span {
  display: inline-block;
  color: #fff;
  background: #000;
}

もちろんこれでも目的は達成出来るが「fit-content」を使うと、コードがさらに簡潔になる。

/* HTML */
<h1>この文字の部分だけ地色を付けたい。センター揃えで。</h1>
/* CSS */
h1 {
  width: -moz-fit-content;
  width: fit-content;
  color: #fff;
  background: #000;
  margin: 0 auto; 
}

ブロックごと右揃えなんかでも便利

そのブロック自体は「右揃え」。ただし中は「左揃え」。なおかつ内包された一番長い文章に合わせて親ブロックの幅をキープするようにしたい時。
例えば「挨拶文」や「規約文章」などの最後に日付や名前を入れる場合は便利。

/* HTML */
<div class="wrap">
  <p>ここに挨拶文やら規約文章など長々入る。ここに挨拶文やら規約文章など長々入る。ここに挨拶文やら規約文章など長々入る。</p>
  <div class="cregit">
      <p>2022年10月7日<br>株式会社クリエイタークリップ<br>代表:しがないWEBクリエイターです</p>
  </div>
</div>
/* CSS */
.cregit {
  width: -moz-fit-content;
  width: fit-content;
  margin: 0 0 0 auto; 
}

「displayでinline-blockにして・・・flexの方がいいかなぁ」などと悩まないで済むのは精神的によろしい。

逆に「親要素の幅にピッタリ合わせる」でも使える

例えば親要素内の画像を親要素のサイズにピッタリ合わせたい場合なども使える。この辺はおまけレベルで覚えておいても良いだろう。