object-fit
プロパティ
<img>
タグに width
と height
を指定すると、画像の縦横比が崩れて、引き伸ばされたり潰れたりすることがあります。object-fit
は、その問題を解決するためのプロパティです。
背景画像における background-size
プロパティと似た動きを、<img>
要素に対して行います。
contain
と cover
contain
画像の全体見えるように、縦横比を保ったままコンテナに収まるように縮小されます。コンテナと画像の縦横比が違う場合、余白ができます。
cover
コンテナを完全に覆うように、縦横比を保ったまま拡大・縮小されます。画像の一部が切り取られる可能性があります。
作成したコード
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>フロントエンド1000本ノック 0038</title>
<style>
div {
margin-bottom: 100px;
}
</style>
</head>
<body>
<main>
<h1>object-fit プロパティ</h1>
<div style="width: 400px; height: 200px;">
<img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Crect width='300' height='300' fill='%234CAF50'/%3E%3Ccircle cx='150' cy='150' r='100' fill='%23FFC107'/%3E%3Ctext x='150' y='165' font-size='48' text-anchor='middle' fill='white' font-family='Arial'%3E300x300%3C/text%3E%3C/svg%3E" alt="正方形の画像(300x300px)" style="width: 100%; height: 100%; object-fit: contain;">
</div>
<div style="width: 400px; height: 200px;">
<img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Crect width='300' height='300' fill='%234CAF50'/%3E%3Ccircle cx='150' cy='150' r='100' fill='%23FFC107'/%3E%3Ctext x='150' y='165' font-size='48' text-anchor='middle' fill='white' font-family='Arial'%3E300x300%3C/text%3E%3C/svg%3E" alt="正方形の画像(300x300px)" style="width: 100%; height: 100%; object-fit: cover;">
</div>
</main>
<footer>
<p>Copyright 2025</p>
<p>フロントエンド1000本ノック</p>
</footer>
</body>
</html>