CSSで画像をトリミングする方法とは?object-fit以外のプロパティも紹介

2022.11.08
CSSで画像をトリミングする方法とは?

Webページに画像を使うときに、トリミングしたものを表示させたい場合があるかと思います。

CSSでトリミングできれば、複数の画像のサイズを事前に揃える必要が無くなり、とても便利ですよね。

今回は、画像をCSSでトリミングしたいという方のために、3つのCSSプロパティを紹介します。

  • object-fit
  • overflow
  • clip-path

この記事を読めば、これらのプロパティを使用して、CSSのみで画像のトリミングができるようになりますよ。

ぜひ最後まで読んでくださいね!

object-fitを使う

最初は、object-fitプロパティを紹介します。

object-fitは、要素のサイズを指定することで、サイズに合わせてトリミングすることができるプロパティです。

以下のように記述します。

img {
  width: 250px;
  height: 250px;
  object-fit: cover; 
}

このコードでは、縦横比を維持したまま、ボックスの中が画像で埋まるようにリサイズされます。

横幅と高さのうち、小さい方のサイズが、指定した250pxに合わせられます

はみ出した部分はトリミングされ、表示されません。

object-fitで使用できる値は、他にもあります。それぞれ解説していきましょう。

fill(初期値)

fillは、ボックス内を満たすように画像の縦横がリサイズされます。

何も指定していない場合は、この初期値と同じ挙動になります。

cover

上記でも説明したように、縦横比を維持した状態で、ボックスが埋まるようにリサイズされます。

縦横のサイズのうち、小さい方を基準に、拡大・縮小を行います。

中央部分が残り、大きい方はトリミングされます。

レスポンシブ対応させる

レスポンシブ対応させたいときにも、coverは重宝します。

img {
  width: 100%;
  height: 450px;
  object-fit: cover;
}

高さを固定し、横幅を100%にすると、親要素の横幅いっぱいに画像が表示されます

トップページのヘッダー画像などに活用できますね。

object-positionで位置を指定する

中央以外の位置に配置したい場合には、object-positionを指定します。

img {
  width: 250px;
  height: 250px;
  object-fit: cover; 
  object-position : 15% 30%; /* 左からの位置 上からの位置 */
 }

数値は%以外に、pxやemなどでも指定ができます。

以下のように基準位置を指定する方法もあります。

object-position: bottom;

画像が下に寄せられた状態で表示されます。これは、数値で100%としたものと等しくなります。

contain

縦横比を維持した状態で、ボックス内に画像全体が収まるようにリサイズされます。

縦横のサイズのうち、大きい方を基準に、拡大・縮小します。

トリミングはされず、小さい方には余白が表示されます。

img {
  width: 250px;
  height: 250px;
  object-fit: contain;
  border: 2px solid #ccc;
  background: skyblue;
}

上記では、余白部分があることを確認できるように、ボックスに背景色と線を足しています。

none

画像はリサイズされず、オリジナルの大きさのままで表示されます。

ボックスの縦横のサイズに合わせてトリミングされます。

img {
  width: 250px;
  height: 250px;
  object-fit: none;
}

上記では、画像の縦横のサイズが250px以上であれば、余った部分はトリミングされ、小さければ、余白ができます。

scale-down

ボックスよりサイズが大きい画像は「contain」が適用され、小さい画像は「none」が適用されます。

つまり、ボックスより大きい画像の場合、縦横のうち大きい方に合わせてリサイズされます。

小さい場合には、オリジナルの画像がそのまま表示されます。

overflowを使う

親要素にoverflowを指定すると、要素からはみ出た部分の処理の仕方を設定することができます。

はみ出た部分を非表示にする場合には、「overflow: hidden」と記述します。

<div class="box">
  <img src="sample.jpg">
</div>

CSSは、以下のように記述します。

.box {
  position: relative;
  overflow: hidden;
  width: 250px; 
  height: 250px;
}
.box img {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

親要素「box」の横幅と高さのサイズを指定しています。

「position: relative」を指定して、子要素のimg要素の位置を中央に配置させます。

img要素では、「position: absolute」と画像の位置を設定しています。

clip-pathを使う

clip-pathを使うと、画像を円や四角だけでなく、五角形やひし形、その他自由な形にトリミングすることができます。

こちらのclip-pathジェネレーターでサンプルが作成できますよ。

CSS clip-path maker

img {
  -webkit-clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);
  clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);
}

上記では、星型にトリミングされますね。

safariのブラウザに対応させるため、「-webkit-」を付与したものも記述しています。

多角形を示すpolygon以外にも、以下のような基本シェイプがあります。

  • inset:四角形
  • circle:正円
  • ellipse:楕円

複数の実際に記述してみて、色々と試してみてくださいね。

まとめ:トリミング方法に合わせてプロパティを使い分けよう

今回は、CSSを使って画像をトリミングする方法を解説してきました。

object-fitプロパティを中心に、3つのプロパティを紹介しましたね。

画像をどうトリミングしたいのかによって使い分けてみてください

Webサイトに画像を載せるときに、今回の記事が参考になれば幸いです。

関連記事

資料請求

  • 短期集中で最速エンジニア転職を実現-転職成功者インタビュー一覧

    DMM WEBCAMPでは転職成功率98%を実現しています。本資料では、元警察官や元ラーメン屋など様々なバックグラウンドを持つ卒業生の声をお届けします。

    資料をダウンロードする
  • IT技術がもたらす3つの変化と身につけるべきスキル

    IT技術の発展により、今後10~20年程度で47%の仕事がなくなると言われています。どのような変化が訪れ、私達はどのようなスキルを身につけるべきかを解説します。

    資料をダウンロードする
  • 未経験がフリーランスエンジニアになる方法-年収アップで自由な働き方を手に入れる

    働き方改革やリモートワークの影響でフリーランスという働き方の人気は高まりつつあります。フリーランスエンジニアとして活躍するために必要な情報をお届けします。

    資料をダウンロードする

© 2023 WEBCAMP MEDIA Powered by AFFINGER5