CSSだけで画像の比率を保ってトリミングできる「object-fit」

カード型のレイアウトを実装するときなどに「画像を特定のサイズにしたい!」と思うときがあります。
自分が画像を書き出して実装するのであれば、サイズを合わせて書き出すので普通に実装すれば実現できますが、クライアント側で運用をお願いする場合や、ユーザーが画像をアップロードして反映するものの場合は、画像サイズや比率を考えずにアップされてしまいます。
そんなとき「理想の画像サイズ・比率じゃないときに特定のサイズに切り抜く」をCSSで実現してくれるのがobject-fitプロパティです。
object-fitの使い方
今回は横幅180px高さ360pxの縦長の画像を、横幅360px高さ222pxにしたい場合を想定します。
See the Pen ZEbeVWQ by Masakazu Saito (@31mskz10) on CodePen.
まず、widthとheightを指定すれば、画像を固定の幅にできますが、その代わりに比率があっていない画像を使った場合は比率が崩れて表示されてしまいます。
比率が崩れないように切り取ってもらうためには、object-fit: cover;を指定します。
object-fit: cover;ちなみに、object-fit contain;を指定すると、画像全体を表示させるようになります。
object-fit contain;
ブラウザ対応状況
非常に便利なプロパティなのですが、IE11ではまだ対応していないのがネックです。
IE11でも使いたい場合はPolyfillを設定すれば使えるようになります。
IE11対応
Polyfillを使用するためには、GitHubからスクリプトをダウンロードするか、CDNのコードを追加するかします。
あとはPolyfillの読み込み後に下記のスクリプトを実行します。
<script>
objectFitImages();
</script>あとはfont-family: 'object-fit: cover;';というように、font-familyでobject-fitを指定してあげます。
object-fit: cover;
font-family: 'object-fit: cover;';これでIE11でも比率が崩れることなく表示されます。



Safari 12.1から外観モード(ライト/ダーク)の判定をCSSで行えるように!
HTMLのpattern属性を使ってフォームのバリデーションチェックを行う方法
WordPressで既に公開済みの記事の更新を、指定した日付に反映する方法「PublishPress Revisions」
SourceTreeで環境設定の「カスタムアクション」「アップデート」「高度な設定」が選択できない
Nuxt.jsでのページ遷移設定方法(Vue Routerやnuxt-link)|Nuxt.jsの基本
Vue.jsのv-forで生成した要素をクリックするたびに、classをトグルで付け外しする方法
WordPressのContact Form 7で送信時に回転アイコンが出たまま止まってしまうときのチェックリスト
GUIコンパイラのPreprosを使ってSassのコンパイルを行う
CSSのz-indexの確認や管理を便利にする方法
SafariのURLメニュー部分も考慮できるCSSの単位「dvh」
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Figma × Keyboard Maestroでどこまで効率化できる?
マウス操作の完成度が高いウインドウリサイズアプリ「Magnet」
Macで複数ディスプレイを使っている場合に便利な設定集
AppCleanerでMacアプリを関連ファイルごと完全に削除する
操作に没頭できる!Firefox版 Arcのようなブラウザ「Zen Browser」
chezmoi(シェモア)で始めるdotfiles管理
GitHubの通知を見逃さない!通知に特化したアプリ「Gitify」
Keyboard Maestroの変数基礎
Neovimを使い始める最初の一歩として便利な「LazyVim」
ウェブサイトをmacOSアプリとしてラッピングする「Unite Pro」