CSS aspect-ratioとobject-fit:焦点ピッカー付き

CSS aspect-ratioとobject-fitガイド

CSS aspect-ratioとobject-fit:ライブデモとTailwind | We.Inc

aspect-ratioでボックスの比率を固定し、object-fitのcover、contain、fill、none、scale-downで写真を収めます。クリックしてobject-positionで焦点を設定できます。

画像サイズの問題のほとんどは、2つのプロパティで解決できます。aspect-ratio: 16 / 9を指定すると、ボックスはどの幅でもその形を保ち、昔のpadding-topハックが不要になります。object-fitは、imgやvideoがそのボックスをどう埋めるかを決めます。coverは切り抜き、containは余白を入れて全体を表示し、fillは引き伸ばします。object-positionは、coverで切り抜くときにどの部分を残すかを指定します。

早見表

下には、形を変えられるボックスにテスト画像が1枚入っています。5つのobject-fitの値を切り替え、画像をクリックして焦点を動かし、CSSやTailwindのクラスをコピーしましょう。さらに下では、paddingハックとaspect-ratioの比較、レスポンシブな動画の埋め込み、サムネイルの揃ったカードグリッドを紹介します。

よくある質問

aspect-ratioとobject-fitの違いは?

aspect-ratioはボックスそのものの形を決め、どの要素にも使えます。object-fitはimg、video、canvasなどの置換要素にだけ適用され、その内容をボックス内にどう描くかを決めます。通常は両方を使います。画像にaspect-ratioを指定して形を固定し、object-fit: coverで画像をボックスいっぱいに表示します。

object-fitが効かないのはなぜ?

画像のボックスが画像と同じ比率なので、切り抜きや引き伸ばしをする部分がないからです。object-fitの違いが表れるのは、固定の高さとwidth: 100%の組み合わせや、ファイルと異なるaspect-ratioなど、ボックスの形が違う場合だけです。

padding-topハックはまだ必要?

現在のブラウザーでは不要です。aspect-ratioは2021年からChrome、Edge、Firefox、Safariで動作しています。古いブラウザーに対応しなければならない場合だけハックを残し、利用者の環境をcaniuseで確認してください。

object-fitは背景画像にも使えますか?

使えません。CSSの背景では、background-size: coverまたはcontainが同等の機能で、焦点にはbackground-positionを使います。object-fitは実際のimg要素やvideo要素用です。コンテンツ画像にはこちらのほうが適しており、altテキストを持てて、srcsetにも対応しています。

aspect-ratioはdivにも使えますか?

はい、どの要素にも使えます。width: 100%とaspect-ratio: 1を指定したdivは、列の幅に合わせて大きくなる正方形になり、地図のプレースホルダー、アバター、スケルトンローダーに便利です。

ブラウザーがaspect-ratioを解決する仕組み

焦点の選び方

aspect-ratioとpaddingハックの比較

aspect-ratioが登場する前は、padding-topをパーセンテージで指定してボックスの形を作っていました。縦方向のpaddingのパーセンテージは幅を基準に計算されるからです。この方法は機能しますが、内容は内側で絶対配置する必要があります。下のボックスはどちらも16:9です。

古い方法と新しい方法、結果は同じ

56.25%は9を16で割った値です。最新の書き方なら1行で済み、内容も通常どおり配置されます。

同じ写真に5つのobject-fitの値を適用

画像は3:2で、ボックスはすべて正方形です。どの値でも比率の違いに対処する必要があるため、差がはっきり分かります。

object-fitの値

fill、contain、cover、none、scale-down

300 x 200の同じ画像を、110ピクセルの正方形5つに入れています。赤い点に注目してください。coverで失ってはいけない被写体です。

レスポンシブな動画と埋め込み

16:9を保つYouTube風のiframe

iframeにwidth 100%とaspect-ratioを指定します。ラッパーのdivも絶対配置も必要ありません。

サムネイルの揃ったカードグリッド

すべてのサムネイルを同じ形に

アップロードされる画像の形はさまざまです。aspect-ratioとobject-fit: coverを使えば、ファイルを1つも編集せずにグリッドが整います。

比率とフィットのTailwindクラス

Tailwind v4のユーティリティ(古いバージョンを使っている場合はv3のドキュメントを確認してください)

比率、フィット、焦点のプレイグラウンド

元の画像(3:2)。クリックするか、フォーカスして矢印キーを使うと焦点を設定できます。

焦点を設定、現在は{pos}

被写体として赤い点を置いたテスト用の風景画像

中央に戻す

object-fit: {fit}を指定した{ratio}のボックスでの結果

ボックスの比率

焦点が最も重要になるのはcoverとnoneのときです。containやscale-downでは、空の帯がどこにできるかを決めます。

CSSをコピー

クラスをコピー

比率に合う正確なピクセルサイズが必要な場合は、こちらを使いましょう:

アスペクト比計算ツール

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る