CSS - 画像関連 - object-fit コンテナへのはめ込み


 クラウディア


1. 概要
2. コンテナ
3. object-fit
4. やってみる
5. cover
6. 参考サイト

1. 概要

 「object-fit」ってぇのを指定すると、コンテナからはみ出たりするものを、うまいこと調整してくれるそうな。  現時点(2022年10月19日)は、「コンテナとは、なんじゃらほい?」で、あったりしますが・・・。

2. コンテナ

 でまぁ、コンテナについて泥縄式に調べておるのですが。  まだ、ようわかっとらんのです。

3. object-fit

 参考サイト、丸写しですが。
作   用 備考
contain アスペクト比を維持したまま、要素のコンテンツボックスに収まるように拡大縮小
cover アスペクト比を維持したまま、要素のコンテンツボックス全体を埋めるように拡大縮小
fill 要素のコンテンツボックス全体を埋めるサイズ
none コンテンツは、拡大縮小されない
scale-down コンテンツは none または contain を指定したかのようにサイズが決められ、オブジェクトの実際のサイズが小さいほうを採用

4. やってみる

 下記の画像(サイズは、1366x768)で実験してみます。

 下記の定義をして。


div.frame
{
	width: 100%;
	text-align: center;
}

.gallery-list
{
	margin: auto;
	border: 2px lime solid;
	text-align: center;
	width: 400px;
	height: 300px;
}

.gallery-list img
{
  	width: 100%;
	height: 100%;
}

<div class="frame">
contain
<div class="gallery-list"><img style="object-fit: contain;" src="/img/FreeBSD/html/01/06/03/01.png" alt="さんぷる"></div>

・・・	略	・・・

</div>
 てな、書き方をしてみました。  アスペクト比「16:9」の大きな画像を アスペクト比「4:3」の小さな枠の中にはめ込むわけです。  「contain」だと、縦横比を保持したまま、すっぽり収まります。

 「cover」は、縦横比を保持したまま、すっぽり収まるように表示するのですが。
 この場合、上と左右のはみ出た部分をカットしています。


 「fill」だと枠のアスペクト比で、画像全体を表示します。
 歪んでしまうので、これはあまり使いたくないな。


 「none」だと、縦横比を保持したまま、収まる部分のみを表示します。


 「scale-down」は、この場合「contain」を採用したようです。


5. cover

 「cover」のうまい使い方は、こんな感じかな。  全体で、このような画像があります。
さんぷる2
 これでも、縮小しているのですが、それでもでかいですね。  これ、実際は、中央あたりにある、「電話」ってとこをくっきりと見せたい場合。

<img src="/パス/画像ファイル名.png" ...>
 と書いて画像を張り付けている箇所を下記のように書き換えると。

<img  style="width: 360px; height: 390px; object-fit: cover;"src="/パス/画像ファイル名.png" ...>
 こんな風に表示されます。
さんぷる2
 同じ表示サイズを保ったまま、はみでたものをカットしてくれています。  実際に、本ページのソースを見れば、そのとおりに書いてあることが確認できるかと思います。

6. 参考サイト

 本ページは、下記のサイトを参考にさせていただきました。
object-fit - CSS: カスケーディングスタイルシート | MDN」
「【CSS object-fit の使い方】CSS で画像トリミングする方法」
「【CSS】object-fit は CSS だけで画像をコンテナーにフィットさせてトリミングもできる...」
「[HTML/CSS] .container(コンテナ)の役目について整理」
「1行追加でOK!CSSだけで画像をトリミングできる「object-fit」プロパティー