【CSS】 「画像」を親要素にフィットさせつつ「中央」に配置したい

この記事は約5分で読めます。
記事内に広告が含まれています

コーディングのイメージ

こんにちは、さち です。

先日、「画像」を「親要素」からはみ出さないようにフィットさせつつ、上下左右縦横)の「中央」に配置したいことがありました。

HTMLCSS をどうすればいいか地味に苦労したので、備忘録としてこの記事にまとめておきます。

スポンサーリンク

【方法1】 「max-width」「max-height」を使う

サンプルコード

<div>
  <img src="horizonal-arrow.png" />
</div>

<div>
  <img src="vertical-arrow.png" />
</div>
div {
  width: 130px;
  height: 130px;
  border: 2px solid brown;

  /* img を中央に配置 */
  display: grid;
  place-items: center;
}

img {
  max-width: 100%;
  max-height: 100%;
}

結果

サンプル

<img> 要素を中央に配置するために、今回は display: grid;place-items: center; を使いましたが、他にも方法はあります。下記リンク先の記事で紹介しているので、併せて参照してみて下さい。

【CSS】 要素を「上下左右(縦横)」の中央に配置する6つの方法
こんにちは、さち です。サイトを作っているとブチ当たるのが、テキストや画像などの要素を「上下左右(縦横)」の中央に配置するには HTML・CSS をどう書けばいいのか問題。左右中央は text-align: center; でだいたい間に合

【方法2】 「object-fit」を使う

サンプルコード

<div>
  <img src="horizonal-arrow.png" />
</div>

<div>
  <img src="vertical-arrow.png" />
</div>
div {
  width: 130px;
  height: 130px;
  border: 2px solid brown;
}

img {
  object-fit: contain;
  width: 100%;
  height: 100%;
}

結果

サンプル

その他の「値」の効果

プロパティ object-fit に使用できる値は contain 以外にもあります。詳しくは下の表のとおりです。何かと役立つので活用してみて下さい。

縦横比 効果
fill(初期値) 無視 親要素を埋め尽くすように、画像を引き伸ばす
contain 維持 画像の長辺を親要素に合わせる
cover 維持 画像の短辺を親要素に合わせ、はみ出した部分は切り取る
none 維持 画像のサイズを変えず、そのまま表示
scale-down 維持 containnone の小さい方を採用
サンプル

コメント

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