ホームページ > ウェブフロントエンド > CSSチュートリアル > CSSオブジェクトフィットとオブジェクトポジションの使用方法

CSSオブジェクトフィットとオブジェクトポジションの使用方法

Jennifer Aniston
リリース: 2025-02-09 10:31:10
オリジナル
1093 人が閲覧しました

How to Use CSS object-fit and object-position

コアポイント

  • cssプロパティobject-fitおよびobject-positionを使用して、背景画像のCSSプロパティbackground-sizeおよびbackground-positionと同様に、埋め込み画像やその他の交換要素をサイズ変更して配置できます。
  • object-fit属性は、指定された領域で画像の表示方法を制御するためのさまざまなオプションを提供し、必要に応じて画像の一部を非表示にすることができます。これは、歪みのない特定の空間に画像を適応させるのに役立ちます。
  • object-fit属性には、covercontainnonescale-downfill
  • の5つの主要なキーワード値があります。これらの値は、画像が容器内に表示される方法を決定し、領域をカバーし、領域に適応し、自然なサイズを維持し、フィットするか、コンテンツボックスを埋めることができます。
  • object-position50% 50%属性は、コンテンツボックス内の画像要素の位置を制御します。そのデフォルト値は
  • です。これは、画像センターをコンテンツボックスセンターと並べますが、一連のキーワード値または長さの値を使用して調整できます。
  • object-fitobject-positionおよび
  • は、あらゆる種類の交換要素を処理するように設計されていますが、最も一般的には、歪みのない特定のスペースに画像を適応させるために最も一般的に使用されます。それらはすべての最新のブラウザでサポートされていますが、インターネットエクスプローラーではサポートされていません。

background-sizecssは、background-positionおよびobject-fitプロパティを提供して、背景画像をサイズ変更して配置します。 object-positionおよびobject-fitプロパティにより、埋め込まれた画像(およびビデオなどの他の交換要素)で同様の操作を実行できます。この記事では、object-positionを使用して画像を特定のスペースに適合させる方法と、その空間内の画像の位置を正確に制御する方法を使用して、特定のスペースにフィットする方法に飛び込みます。

object-fitの用途 時々、画像が大きすぎて、必要なスペースに合わせることができない場合があります。過去には、画像エディタで画像をトリミングするか、幅や高さの制約を設定して画像をサイズ変更するか(これは完璧な選択ではありません)、ある種の複雑なトリミングを実行するか、背景画像を使用することに頼る必要がありました(または、背景画像の使用に頼る必要がありました(画像が装飾だけではない場合、これは残念です)。

画像上の属性の関数は、背景画像上の

の関数に似ています。指定された領域で画像が表示される方法を制御するためのさまざまなオプションを提供し、その一部を隠すことができます必要に応じて画像の内容。この指定された領域には固定された幅と高さがある場合があります。または、ブラウザビューポートのサイズに応じて成長、縮小、曲げたメッシュ領域など、より応答性の高いスペースである場合があります。 object-fit 働き方background-size

各HTML要素には、要素が占めるスペースを表す独自の「コンテンツボックス」があります。デフォルトでは、画像のコンテンツボックスは自然なサイズと一致します。

画像に異なる幅や高さを適用すると、実際にコンテンツボックスのサイズが変更されています。コンテンツボックスのサイズが変更された場合、画像はコンテンツボックスに入力されます。したがって、300px x 300pxの画像があり、そのサイズを300px x 200pxに設定すると、画像が変形します。

object-fitプロパティは、サイズ変更されたコンテンツボックスに画像を表示するためのさまざまなオプションを提供します。画像の一部を非表示にするか、画像が完全に表示され、変形しないように、画像にコンテンツボックスを部分的にのみ満たすように強制することができます。

設定

object-fitプロパティがどのように機能するかを詳細に説明するために、グリッドレイアウトを使用して中心にあるDivに画像を配置します。 divには茶色の背景があり、点線の境界線は::before オブジェクトフィット:セットアップ

画像のデモンストレーションには、次の画像(OIA、サントリーニ、ギリシャ)を使用します。その自然な寸法は400px x 600pxです。

How to Use CSS object-fit and object-position 私たちの画像は私たちのdivよりもはるかに大きく、divの内側に画像を配置すると、以下に示すようにオーバーフローします。

オブジェクトフィット:setup2

私たちの目標は、容器に快適に取り付けられながら、画像がこのようなコンテナを溢れさせないようにすることです。

背景画像を使用している場合、

に似たものを設定でき、背景画像はコンテナの領域に限定されます。ただし、ご覧のとおり、object-fitが機能するためには、最初に画像コンテンツボックスの幅と高さを定義して、自然な寸法とは異なるようにする必要があります。次の例では、画像の幅と高さを100%に制限して、コンテンツボックスがコンテナdivのサイズと一致するようにします。

これがどのように見えるかです。 background-size: cover object-fitオブジェクトフィット:setup3

img {
  width: 100%;
  height: 100%;
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

画像とそのコンテンツボックスは、コンテナに完全に適合するようになりましたが、画像は大幅に変形しています。これは、

の魔法が登場する場所です。それが何が提供できるか見てみましょう。

adap画像をコンテナに使用します

object-fit

object-fit属性は、5つの主要なキーワード値を提供して、そのコンテナ内に画像が表示される方法を決定します。 2つのキーワード - coverおよびcontain - は、background-sizeと同じ関数を実行します。

object-fit: cover

cover値は画像にコンテナ領域を完全にカバーするように強制し、歪みなしでできるだけ多くの画像を表示します。

img {
  width: 100%;
  height: 100%;
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
オブジェクトフィット:カバー

画像が非常に高いため、その全幅が見られますが、次の画像に示すように、その完全な高さはわかりません。

How to Use CSS object-fit and object-position

値はおそらく提供される最も実用的な値であり、ほとんどの場合に好まれます。

coverここで注目に値するのは、画像の場所です。コンテナの左上隅からの背景画像を見つける

(デフォルトは

)とは異なり、デフォルトのbackground-positionis0 0は、そのコンテンツボックスに画像を中心にします。後でobject-positionプロパティを見ると、画像のどの部分が表示されているかを指定する方法を学びます。 50% 50% object-position

object-fit: contain

値は、画像にコンテンツボックスに完全に適応するように強制しますが、歪んでいません。画像は自然なアスペクト比を保持しているため、容器が充填されません。

containオブジェクトフィット:

img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
を含む

画像にを設定するだけで、上記と同じ結果を得ることができるようです。しかし、それはそうではありません。なぜなら、それはセンターの代わりに画像を左に配置するからです。これはのデフォルト設定です。

と組み合わせることで、コンテナに画像がどのように配置されるかについては、より多くのオプションがあります。 height: 100% object-fit object-positionobject-fit

プロパティにより、画像は自然なオリジナルサイズのままになります。サイズ変更されたコンテンツボックスに適応できる部分画像のみが表示されます。 object-fit: none オブジェクトフィット:なし<

noneとは異なり、私たちの画像は少なくとも1つの軸に沿って完全に見えることを余儀なくされていません。元の画像はコンテンツボックスよりも広くて高くなるため、次の画像に示すように、両方向にあふれています。

もう一度、画像の中心はデフォルトでコンテンツボックスの中心に整合していることに注意してください。

また、

object-fit: noneobject-fitが何もしなかったという意味ではないことに注意してください。これまで見てきたように、object-fitセットをまったく持っていないのと比較して、多くのことを行います。 (リマインダーとして、上記の例でobject-fit: noneを削除した後、状況を確認してください。)

object-fit: scale-down

属性は、

と同じかscale-downと同じです。画像をより小さな結果を表示するようにnoneを選択します。 contain Object-Fit:スケールダウン

明らかに、現在の例では、コンテナ

画像よりも小さいため、を選択します。コンテナ

画像よりも大きい場合、containが支配し、画像はコンテナを一方向に満たすのではなく、自然なサイズを維持します。 noneデモの

値を

に変更すると、設定がないようですobject-fit: fill。これは、デフォルトでは、どのサイズが設定されていても、画像がコンテンツボックスを埋めるためです。

オブジェクトフィット:fillobject-fitfill object-fit

プロパティは画像を変形させる可能性があるため、ほとんどの場合、最良の選択ではないかもしれません。

コンテナなしで使用します

上記の例では、fillを使用してDivコンテナの画像をサイズ変更していますが、実際に見た原則は、そのコンテナなしでも同様に機能します。重要なのは、画像コンテンツボックスのサイズと、そのコンテンツボックスに画像の表示方法です。

たとえば、

次のCSSを周囲のdivなしで画像に適用できます。 object-fit結果は、以下のCodepenデモに示されています。 オブジェクトフィット:コンテナなし

object-fit

上記の例で上書き、埋め、縮小などを上書きし、充填、縮小し、

属性の値を変更して、各値の動作を確認してみてください。結果は、画像設定の結果と同じ幅と高さに設定され、300px x 300pxに設定されたDivに含まれています。

レスポンシブレイアウトで使用されている
img {
  width: 100%;
  height: 100%;
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

< 画像の指定された領域のサイズがブラウザビューポートのサイズに応答している場合、

プロパティが最も役立ちます。次のデモでは、画像を特定の柔軟なグリッド領域に割り当てます。 Object-fit in a Responsive領域

ビューポートとグリッド領域が拡大して縮小すると、cover値は画像が常にグリッド領域に完全に適応することを保証し、画像の可視部分を変更して歪まないようにします。 (最良の結果を得るには、ページビューのデモを表示します。)

グリッド領域の詳細については、CSSグリッド準備ガイドをご覧ください。

object-positionを使用して画像位置を設定します

background-positionを使用して、そのコンテナ内の背景画像の位置を設定するのと同じように、object-position属性はコンテンツボックス内の画像要素の位置を制御します。

ご覧のとおり、object-positionのデフォルト値は50% 50%です。つまり、画像中心は水平軸と垂直軸のコンテンツボックス中心に整合しています。一連のキーワード値(上、下、左、右、中央)を使用して、または長さの値(PX、EM、%など)またはその両方を使用して変更できます。

今、画像を右下隅から配置したいとします。キーワードを使用できますright bottomまたはパーセンテージ値100% 100%

img {
  width: 100%;
  height: 100%;
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
Object-Position 1:キーワード

次の画像は、画像の現在の位置を示しています。

How to Use CSS object-fit and object-position

上記の例のターゲティングキーワードを使用して、それらの動作と

キーワードを確認できますが、結果は簡単に予測できるはずです。 object-fit

ピクセルやEMなどのユニットを使用して、コンテナから画像をオフセットすることもできます。たとえば、

img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

Object-Position 2:units

以下に示すように、ユニットとキーワードを組み合わせることで、右下隅から同様のオフセットを作成できます。

Object-Position 3:ユニットとキーワード

img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
ログイン後にコピー

コンテンツボックス内の画像を見つけるためにパーセンテージを使用できることがわかりました。 属性と同様に、の割合を使用すると少し混乱する可能性があります。

's

は、画像の中心が水平軸と垂直軸のコンテンツボックスの中心に整合することを意味します。 background-position object-position object-position50% 50%に設定すると、画像の左側の20%の垂直線が、コンテンツボックスの左側の20%の垂直線と水平に一致することを意味します。下の図に示すように、コンテンツボックスの上部の40%にある水平線と一致する画像の上部の40%の線。

object-position20% 40%

以下のCodepenデモでこれを見ることができます。

Object-Position 4:パーセンテージ

結論

属性は、画像、ビデオ、iframe、埋め込まれたオブジェクトなど、あらゆるタイプの交換要素とともに使用することを目的としています。いくつかの要素が非表示になる可能性のある定義された領域にビデオのような要素を適応させることは、おそらく議論されるべき質問ですが、実行可能なユースケースがあることは間違いありません。より良いオプションは、iframeの幅を自由空間のobject-fitに設定し、その比率を維持するためにwidth: 100%プロパティを使用することです。 aspect-ratio より一般的な状況は、画像を特定のスペースに適応させる必要があるため、

は、画像が歪みのない空間に適応できるようにするのに非常に役立ちます(画像の一部を非表示にしても)。

object-fit

の詳細については、これらのプロパティについてはMDNページをご覧ください。 object-fit object-position[Object-Fit](リンクをMDNオブジェクトフィットリンクに置き換える必要があります)

    [Object-Position](リンクをMDNオブジェクトポジションリンクに置き換える必要があります)
  • 最後に、上記のように、
  • および
プロパティを

およびobject-fitプロパティと比較する価値があります。これらには多くの類似点があります。 CSSを使用する方法をご覧ください。 object-position background-sizebackground-positionFAQ(FAQS)CSS background-sizebackground-positionプロパティ

について cssのobject-fitobject-positionの違いは何ですか?

CSSの

およびobject-fitプロパティは、画像やビデオなどの交換要素のコンテンツを制御するために使用されます。 object-position属性は、要素がコンテンツボックスの高さと幅にどのように応答するかを定義します。 CSSでは

に似ていますが、交換要素で動作します。 5つの値があります:

object-fitobject-positionobject-fitbackground-size、およびfillcontain 一方、covernone属性は、交換要素がボックス内の場所を決定します。それはscale-downに似ていますが、交換要素で動作します。 xおよびy座標を表すには2つの値が必要であり、要素の位置を設定します。

object-position属性を使用して画像のサイズを変更するにはどうすればよいですか? background-position

プロパティを使用して、コンテナに適合するように画像のサイズ変更方法を制御できます。例は次のとおりです。object-fit

この例では、アスペクト比を維持しながら、コンテナの幅と高さ全体をカバーするように画像がサイズ変更されます。画像のアスペクト比がコンテナのアスペクト比と一致しない場合、画像はトリミングされます。

背景画像でobject-positionを使用できますか?

いいえ、object-position属性は、背景画像では使用できません。 imgvideoembedなどの交換要素でのみ機能します。背景画像の場合、代わりにbackground-position属性を使用できます。

object-fit 'scontain値はどのように機能しますか?

アスペクト比を維持しながら、コンテンツをコンテンツボックスに適合させるようにコンテンツのサイズを変更します。そのアスペクト比がコンテンツのアスペクト比と一致しない場合、コンテンツ全体が表示されますが、コンテンツボックスにはまだいくつかのスペースがあるかもしれません。

object-fitcontain値の機能は何ですか?

object-fitnone属性の値は、コンテンツがコンテンツボックスの高さと幅を無視することを意味します。元のサイズを保持し、コンテンツボックスよりも大きい場合はコンテンツがトリミングされる可能性があります。

object-fitセンター画像の使用方法は? none

プロパティを使用して、コンテンツボックスの画像を中央に配置できます。例は次のとおりです。object-position

この例では、画像はコンテンツボックスの中央に配置されます。

object-position

でパーセンテージ値を使用できますか?
img {
  width: 100%;
  height: 100%;
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

はい、

属性でパーセンテージ値を使用できます。これらの値は、コンテンツボックスに対するコンテンツの位置を示しています。たとえば、

コンテンツボックスの左上隅にコンテンツを見つけ、object-positionは右下隅に配置します。

object-position値を指定しないとどうなりますか? 0% 0% 100% 100%

値を指定していない場合、デフォルト値はobject-positionであり、コンテンツボックス内にコンテンツを中央に配置します。

同時にobject-position50% 50%を使用できますか?

はい、object-fitおよびobject-positionプロパティを使用して、コンテンツのサイズと位置を制御できます。例は次のとおりです。

この例では、この例では、コンテンツボックスを上書きして中央に置くために画像がサイズ変更されます。 object-fit object-positionすべてのブラウザは

および
img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
プロパティをサポートしていますか?

Chrome、Firefox、Safari、Edgeを含むすべての最新のブラウザは、

および

プロパティを広くサポートしています。ただし、Internet Explorerはそれらをサポートしていません。 object-fit すべてのコードの例のCodePenリンクは、実際のリンクに置き換える必要があります。 この記事は、元のテキストのすべての情報と写真を保持しながら、疑似オリジナリティの要件を満たすために大いに書き直され、洗練されています。 object-position

以上がCSSオブジェクトフィットとオブジェクトポジションの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

前の記事:ネイティブCSSネスティングの紹介 次の記事:HTMLで長方形を描く4つの簡単な方法
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート