home
twitter
ページトップへ
目次
  • 「object-fit」では、何ができるのか?
  • 置換要素とは?
  • 公式定義。
  • 「object-fit」に設定できる値は5つ。
  • それぞれの値を使うと、どうなるのか?
  • 「none」を使うと?
  • 「contain」を使うと?
  • 「cover」を使うと?
  • 「fill」を使うと?(初期値)
  • 「scale-down」を使うと?
  • 「img要素自体」の幅や高さが大事。なので親要素のサイズは関係ない。
  • 「object-fit」が効かない時に考えることは?
  • 「object-fit」を指定するのは、「img」要素などの置換要素
  • 高さと幅の設定がない
  • IEを使っている
  • キャッシュの問題
  • 置換要素は、インラインボックスでも、幅と高さが指定できる。
  • カクつかないので、「width属性」と「height属性」でサイズを指定することを推奨する。
  • まとめ。
about
categories
page
archive
皇帝ペンギンブログ

2023/07/01 (更新日:2024/07/11)

【CSS】「object-fit」について解説。【分かりやすい。】

Categories > CSSの基本編
cssの「object-fit」の使い方が簡単に知りたい。

この記事はこのような方へ向けて書いています。

この記事で得られる知識!

  • 「object-fit」で何ができるのか?
  • 「object-fit」の使い方!
  • 「object-fit」を使う上での注意点。

この記事を読むことで、これらの知識が得られます。

この記事でサクッと「object-fit」について学習しちゃって下さい!

また、下の動画で「object-fit」プロパティについて詳しく解説しているので、一緒に実際にコードを書きながら学びたい方はこちらをどうぞ!
では、内容へ入っていきますね!
目次
非表示
  • 「object-fit」では、何ができるのか?
  • 置換要素とは?
  • 公式定義。
  • 「object-fit」に設定できる値は5つ。
  • それぞれの値を使うと、どうなるのか?
  • 「none」を使うと?
  • 「contain」を使うと?
  • 「cover」を使うと?
  • 「fill」を使うと?(初期値)
  • 「scale-down」を使うと?
  • 「img要素自体」の幅や高さが大事。なので親要素のサイズは関係ない。
  • 「object-fit」が効かない時に考えることは?
  • 「object-fit」を指定するのは、「img」要素などの置換要素
  • 高さと幅の設定がない
  • IEを使っている
  • キャッシュの問題
  • 置換要素は、インラインボックスでも、幅と高さが指定できる。
  • カクつかないので、「width属性」と「height属性」でサイズを指定することを推奨する。
  • まとめ。

「object-fit」では、何ができるのか?

置換要素に入るコンテンツをその表示領域に「どのようにはめ込むのか」の設定ができます。

比較的に新しいプロパティですが、使えると便利ですね。
例えばこんな感じ。

「object」を使う。1

「object」を使う。2

水色の枠線は、表示領域です。

そこに置換要素であるimg要素を埋め込んでいます。

上の2つの画像では、埋め込まれ方に違いがあると思います。

上の方は、画像を全て表示することができていますが、余白ができていて、

下の方は、画像は一部しか表示されていませんが、余白はなくなっています。

このような埋め込み方の設定ができるのが、「object-fit」です。
なるほど!イメージできたよ!

置換要素とは?

「object-fit」は「置換要素」をその表示領域に「どのように埋め込むか」の設定ができる訳ですが、その「置換要素」って何??と思うかもしれないので、そちらについて説明します。

「置換要素」!

  • img
  • video
  • iframe

「置換要素」には、上の様なものなどがあります。

※全てではありません。

ものもと別の場所にコンテンツがあって、それがCSSからは独立していて、HTMLタグの指定によって、そのタグのコンテンツとして置き換えられるような要素のことですね。

例えば?

例えば、「img要素」は、「src属性」によって、そこに入るコンテンツが指定された画像へ置き換えられる形で表示されます。

「src属性」の値を変更したら、また別のコンテンツ(画像)へと置き換わります。

このようなタイプの要素を「置換要素」と呼びます。

なるほど!!

公式定義。

「object-fit」の公式定義についてです。

「object-fit」の公式定義

  • 初期値は、「fill」
  • 継承は、なし

これらも知っておいてくださいね。

「object-fit」に設定できる値は5つ。

「object-fit」に設定できる値は、下記の通りです。

「object-fit」に設定できる値

  • none
  • contain
  • cover
  • fill(初期値)
  • scale-down

これらの値を設定することができます。

こんな感じでシンプルです!

それぞれの値を使うと、どうなるのか?

それでは先ほどお伝えした5つの値を使ってみながら、その挙動について解説したいと思います!

わーい!

「none」を使うと?

「object」を使う。1

「object-fit」の値に「none」を使うと、このように、「元々の画像のサイズ」のまま、領域内にはめ込まれます。

もし、サイズが大きな画像を使うと、下の様になります。

「object: none」を使うと、大きい画像は、切れてしまう。

表示領域よりも大きな画像だと、上の様に、そこからはみ出る部分は切り取られて表示されます。

「contain」を使うと?

「object-fit: contain」を使ってみる。

「object-fit」の値に「contain」を使うと、上の様になります。

置換するコンテンツのアスペクト比を保ったまま、表示する領域にコンテンツが収まるように、コンテンツが拡大・縮小して表示されます。

たしかに、そうなってるね!
コンテンツのアスペクト比と表示領域のアスペクト比が合わない時は?

レターボックスと呼ばれる表示になります。

上の画像の様に、表示領域の中にスペースができる感じですね。

「cover」を使うと?

「object-fit: cover」を使ってみる。

「object-fit」の値に「cover」を使うと、上の様になります。

表示領域内に余白ができないことが特徴ですね。

これもよく使いそうだね!

「fill」を使うと?(初期値)

「object-fit: fill」を使ってみる。

「object-fit」の値に「fill」を使うと、上の様になります。

表示領域ぴったりにコンテンツが拡大・縮小されます。

なので、コンテンツのアスペクト比と表示領域のアスペクト比があってない場合は、画像のアスペクト比が変更されます。

上の図のように、画像が引き伸ばされた感じになってしまいますので、注意が必要ですね。

この「fill」が初期値です!

「scale-down」を使うと?

「scale-down」を使う。1

「object-fit」の値に「scale-down」を使うと、上の様になります。

表示領域よりも、大きな画像は「contain」と同じようになります。

ですが、表示領域よりも、小さな画像は下の様になります。

「scale-down」を使う。2

このように、ですが、表示領域よりも、小さな画像の時は、「none」と同じようになります。

つまりは、「contain」と「none」を入れた時に、小さい方が採用される感じですね。
このような指定ができるということも、覚えておいて下さいね。

「img要素自体」の幅や高さが大事。なので親要素のサイズは関係ない。

<div class="box">
        <img src="pengin.png" alt="ペンギンの画像。">
    </div>

上のようなHTMLの構造になっているとします。

この時、「img要素」の表示領域は、「img要素自体」の「width」と「height」で指定されるので、親要素の「box」クラスがついている「div要素」は関係ないです。

そこを間違わないように、してください!

「object-fit」が効かない時に考えることは?

「object-fit」が効かない!なんてことになった時に、考えるリストを用意しました。それは下記の通りです。

「object-fit」が効かない時の対処法。

  • 置換要素に指定してない
  • 高さと幅の設定がない
  • IEを使っている
  • キャッシュの問題

こららが考えられますので、当てはまってないか、確認してみてください。

「object-fit」を指定するのは、「img」要素などの置換要素

img {
    object-fit: contain;
  }

「object-fit」の指定をするのは、「置換要素」に対してです。

親要素などに指定しないように気を付けてくさい!

高さと幅の設定がない

置換要素に対して、「width」と「height」が設定されていないと、表示領域が決まらないので、「object-fit」が上手く効きません。

なので、これにも注意してくさい。

IEを使っている

「object-fit」は比較的に新しいプロパティです。

なので、「Internet Explorer」というwebブラウザではサポートされていません。

Internet Explorer のサポートは、2022 年 6 月 15 日に終了しました。
Microsoft

このように、IEはすでにサポートがされていないブラウザなので、一般のユーザーで使っている人は多くないと思うので、あまり気にすることはないと思いますが、IEだと「object-fit」は効かないことを知っておいてください。

「Can I Use」で調べてみると。

「Can I Use」で「object-fit」について調べた。

https://caniuse.com/?search=object-fit

「Can I Use」という、様々なwebブラウザでその技術がサポートされているかどうか調べることができるサイトで調べてみました。

すると、このように、「object-fit」がIEでは対応してないことが確認できると思います。

キャッシュの問題

「HTMLファイル」や「CSSファイル」を編集したのに、変更が更新されない時は、もしかしたらキャッシュが残っていることが原因かもしれません。

なのでキャッシュを消去してみることを試してみてください。

キャッシュを消去する方法は?

キャッシュの消去方法1

「Chrome」ブラウザでのキャッシュの消去方法を紹介します。

まず上の様に、「webページ上で右クリック」してみてください。

すると「検証」という欄が一番下にあると思うので、そこをクリックして開発者ツールを開いてください。

キャッシュの消去方法2

開発者ツールが開けたら、左上の更新するための「丸い矢印」の上で「右クリック」をしてみてください。

すると、でてくる「キャッシュの消去とハード再読み込み」をクリックしてください。

するとキャッシュを消去することができます。

他の場面でも、たまにキャッシュのせいで上手くいかないことがあるので、これは覚えておいてくださいね!

置換要素は、インラインボックスでも、幅と高さが指定できる。

「img要素」はデフォルトで「インラインボックス」です。

ですが、「置換要素」は「幅と高さの設定」ができる、というルールがあります。

つまり、「width」と「height」を使うことができる、ということですね。

細かい知識ですけど、大切です。

カクつかないので、「width属性」と「height属性」でサイズを指定することを推奨する。

https://chibasyuta.org/wp-content/uploads/2023/07/kakutuku_1.mp4
img {
    width: 600px;
    height: 600px;
  }

CSSによって、「img要素」に対してCSSで「width」と「height」を設定すると、画像の読み込みが遅れた場合に、上の動画の様に、あとから画像が入り込むのでwebページが「カクついてしまう」というのが起こります。

解決策は?
https://chibasyuta.org/wp-content/uploads/2023/07/kakutuku_2.mp4
<div class="box">
        <img src="pengin.png" alt="サムネイル" width="600" height="600">
    </div>

ですが、上の様に、「width属性」と「height属性」を使ってHTMLファイルで「img要素」の幅と高さを設定してあげれば、予めスペースが作られるので、カクつかないです。

このような解決策があることも知っておいてね!

まとめ。

「object-fit」は置換要素に入るコンテンツをその表示領域に「どのようにはめ込むのか」の設定ができる。

「object-fit」に設定できる値は下記の通り。

「object-fit」に設定できる値

  • none
  • contain
  • cover
  • fill(初期値)
  • scale-down

「img要素自体」の幅や高さが大事で、親要素のサイズは関係ない。

「object-fit」が効かない時の対処法。

  • 置換要素に指定してない
  • 高さと幅の設定がない
  • IEを使っている
  • キャッシュの問題

カクつかないので、「width」と「height」属性でサイズを指定することを推奨する。

置換要素は、インラインボックスでも、幅と高さが指定できる。

こんな感じですかね。
また、下の動画で「object-fit」プロパティについて詳しく解説しているので、一緒に実際にコードを書きながら学びたい方はこちらをどうぞ!

それではこんな感じでこの記事を終わります!

ではまた!

自分のロゴ!

皇帝ペンギン

全力で、書きます。
少しでもお役に立てたら幸いです。
楽しんで読んで下さい 。-_- 。
よろしくお願いします!

x(旧twitter) youtube
Categories
  • トップへ
  • ITパスポート (1)
  • programming (168)
    • CSSのアニメーション編 (26)
    • CSSのグリッドレイアウト編 (1)
    • CSSのセレクター編 (58)
    • CSSのフレックスボックス編 (1)
    • CSSのメディアクエリー編 (7)
    • CSSの基本編 (34)
    • HTMLのformタグ編 (1)
    • HTMLの基本編 (3)
    • JavaScriptの入門編 (30)
    • JavaScriptの基本編 (5)
    • Web制作をする環境を整えよう! (1)
  • Uncategorized (23)
  • VScode (1)
  • おすすめ商品! (1)
  • クラロワ (2)
  • マーケティング (17)
  • 大学生活 (7)
  • 心理学 (9)
  • 映画 (1)
  • 法学 (4)
  • 経済学 (4)
  • 読書 (7)
Pages
  • プライバシーポリシー
  • 免責事項
  • プロフィール
Archive
  • 2025年3月 (1)
  • 2025年1月 (9)
  • 2024年12月 (13)
  • 2024年11月 (5)
  • 2024年10月 (10)
  • 2024年9月 (15)
  • 2024年8月 (5)
  • 2024年7月 (6)
  • 2024年6月 (5)
  • 2024年5月 (10)
  • 2024年4月 (24)
  • 2024年3月 (11)
  • 2024年2月 (6)
  • 2024年1月 (10)
  • 2023年12月 (4)
  • 2023年11月 (3)
  • 2023年10月 (2)
  • 2023年9月 (3)
  • 2023年8月 (6)
  • 2023年7月 (3)
  • 2023年6月 (8)
  • 2023年5月 (2)
  • 2023年3月 (1)
  • 2023年2月 (1)
  • 2022年10月 (2)
  • 2022年9月 (2)
  • 2022年8月 (8)
  • 2022年7月 (2)
  • 2022年6月 (6)
  • 2022年5月 (9)
  • 2022年4月 (2)
  • 2022年2月 (4)
  • 2021年12月 (1)
  • 2021年11月 (4)
  • 2021年10月 (8)
  • 2021年9月 (14)
  • 2021年8月 (6)
  • 2021年6月 (1)
  • 2021年5月 (2)
  • 2021年4月 (1)
  • 2021年3月 (1)
  • 2021年2月 (2)
  • 2020年10月 (1)
  • 2020年7月 (1)
  • 2020年4月 (1)
  • 2020年1月 (1)
  • 2019年12月 (2)
© Copyright Syuta Chiba, 2019 All Rights Reserved.