【IE対応】CSSで画像をトリミングする「object-fit」まとめ

レイアウトのサイズに合わせ、出力する画像を複数用意する時代はもう終わりを告げた。

今は「object-fit」というウルトラ便利なcssで、1つの画像を自在にトリミングして表示できるのだ。

というわけで、「object-fit」の使い方をまとめてみました。




基本の使い方

まずは、画像をそのままトリミングしてみましょう。

以下は画像そのままのサイズのやつ。

これを300×300にトリミングします。

できました。
画像のwidthとheightを指定し、「object-fit: cover;」と加えることで、画像がトリミングされて表示されます!

親要素に合わせる

親要素が可変するので、画像もそれに合わせてトリミングしたい。背景みたいに使うパターンですね。

画像のwidthとheightを100%にしてあげればオッケー。
わざわざabsoluteとか使ってた人たち、泣いてませんか?

プロパティ

object-fit: cover; 以外にも、全部で5種類のプロパティがあります。

1. object-fit: fill;

指定したwidthとheight通りに画像を変形させます(初期値)

2. object-fit: cover;

指定したwidthとheightを埋めるように画像をトリミングします。この際、画像は指定したwidthとheightのうち、大きい方に合わせ自動でリサイズされます。background-size: cover; と同じ。

3. object-fit: contain;

指定したwidthとheightの中にきっちり納まるように画像を配置します。トリミングはされません。background-size: contain; と同じ。

4. object-fit: none;

指定したwidthとheightを埋めるように画像をトリミングします。画像はリサイズされません。

5. object-fit: scale-down;

containかnoneのうち、小さい方を表示させます。

使うのはcontainばっかりになりそうですが、他のも覚えておくといつか役に立つ日が来ると思います。

トリミング位置の調整

何も設定しないと中央を基準にトリミングされますが、「object-position」を使えばトリミング位置を調整することも可能。

pxでも指定できちゃう

これを使うと、「WordPressで登録したサムネイルのトリミング位置を変更したい」という無茶振りにも割とスムーズに対応可能。

IEでも使う方法

このCSS、Internet Exploreで使えない!

最近はIE対応しないのがデフォルトの人も増えてきたようですが、残念ながらまだIE11対応しなきゃいけない場合のほうが圧倒的に多い。こんなに革命的に便利なのに、IEで使えないんじゃだめじゃん…

しかしご安心ください。若干手間が増えますが、IEでも使う方法があります。

それが、「object-fit-images.js(通称ofi)」と呼ばれるjsスクリプトを使用する方法。

以下のように記述して、ファイルを読み込み、処理を呼び出します。だいたいページのhead内か、</body>直前とかに書きますよね。

これでhtml側の準備はOKなんですが、CSSにも書き加える必要があります。

positionも加える場合はこう

「font-family」を使った謎の記述…どうなってるんですかねこれは…

ともかく、これでIEでも使えるようになります!よかったね。

それじゃ、バイバイ~!