トラブルシュート

画像が縦長・横長に潰れるときの対処

サムネイルやヒーロー画像が縦に伸びたり横に潰れたりして、本来の比率と違って見える。これは多くの場合、画像の表示枠に幅と高さの両方を固定で指定し、元の縦横比を無視して引き伸ばしてしまっていることが原因です。この記事では、比率を保ったまま枠に収める object-fit と aspect-ratio の使い方を整理します。

なぜ画像が潰れるのか

画像が潰れる典型は、img や背景の表示枠に width と height を両方とも固定値で指定し、その比率が元画像の縦横比と違うケースです。枠の形に合わせて中身が無理やり引き伸ばされ、縦長や横長に歪みます。

サイズの違う写真をカードに並べるとき、枠の高さだけ揃えようとして起きることも多いです。枠を揃えること自体は正しい狙いですが、中身の引き伸ばし方を指定しないと比率が崩れます。

object-fitで枠に賢く収める

固定サイズの枠に画像を比率を保って収めたいときは object-fit が有効です。object-fit: cover は比率を保ったまま枠いっぱいに広げ、はみ出す部分を切り取ります。サムネイルやカード画像でよく使われます。

object-fit: contain は比率を保ったまま枠内に収まるように縮小し、余った部分は余白になります。画像全体を必ず見せたいロゴや商品写真などに向きます。

切り取りの基準位置は object-position で調整できます。cover で人物の顔が切れてしまう場合などに、見せたい部分を枠の中心へ寄せられます。

症状別チェック表

画像が縦長・横長に潰れるは、症状を分けずに直そうとすると原因探しが長引きます。まず「自分だけで起きるのか」「全員で起きるのか」「特定ブラウザだけか」「差し替え後だけか」を切り分けます。

確認順序を固定すると、相対パス、ファイル名、キャッシュ、認証、外部読み込みのどこで止まっているかが見えます。修正後はローカル確認だけで終わらせず、実際の共有URLで再表示して、相手と同じ条件で直ったことを確認します。

  • 自分だけ表示されない: キャッシュ、ログイン状態、ブラウザ拡張、端末幅を確認する
  • 全員で表示されない: ファイル構成、相対パス、大文字小文字、アップロード漏れを見る
  • 一部だけ崩れる: CSS/画像/JSごとに読み込みエラーを分ける
  • 差し替え後だけ古い: URL、キャッシュ、更新対象ファイルの取り違えを確認する

比率を保って表示する手順

枠の作り方と画像側の指定を組み合わせて、潰れない表示にします。

  1. まず width か height の一方だけを指定し、もう一方は auto にできないか検討する。
  2. 枠の縦横比を固定したい場合は、枠に aspect-ratio を指定する。
  3. 枠を固定したまま画像を収めるなら、img に width:100%; height:100% と object-fit: cover を指定する。
  4. 全体を必ず見せたい画像は cover ではなく contain を使う。
  5. cover で見せたい部分が切れるときは object-position で基準位置を調整する。

aspect-ratioで枠の比率を固定する

aspect-ratio を使うと、要素の縦横比そのものを指定できます。たとえば aspect-ratio: 16 / 9 と書けば、幅が変わっても高さが自動で 16:9 に追従し、レスポンシブでも比率が保たれます。

画像枠に aspect-ratio を指定し、その中の img に object-fit: cover を組み合わせると、画面幅が変わっても枠の形が一定で、中身も潰れない安定した表示になります。カードのサムネイル領域などで扱いやすい構成です。

さらに、img タグに本来の width と height 属性を入れておくと、ブラウザが読み込み前から比率を把握でき、表示時のレイアウトのガタつきも抑えられます。

実機での見え方を確認してもらう

画像の切り取りや余白の出方は、画面幅や画像の中身によって印象が変わります。cover で大事な部分が切れていないか、contain で余白が間延びしていないかは、実際に表示して見てもらうのが確実です。

ギガサイト便なら、CSS や画像を含むものは ZIP にまとめてドロップすれば、その場で 〇〇.giga-site.com の共有 URL が発行されます。相手はリンクを開くだけで、複数の端末幅で画像の見え方を確認できます。

同じ URL のまま中身を差し替えられるので、object-fit や object-position を調整するたびに新しいリンクを配る必要はありません。エッジ配信で画像の表示も速く、レビューが滞りません。

よくある質問

画像が縦長や横長に潰れるのはなぜですか。

表示枠に width と height を両方固定で指定し、その比率が元画像の縦横比と違うと、中身が枠に合わせて引き伸ばされ歪みます。object-fit を指定して比率を保つのが基本です。

object-fitのcoverとcontainはどう使い分けますか。

枠いっぱいに敷き詰めたいなら cover、画像全体を必ず見せたいなら contain です。cover ははみ出し部分を切り取り、contain は余白を残して全体を収めます。

coverで見せたい部分が切れてしまいます。

object-position で切り取りの基準位置を調整してください。人物の顔など見せたい箇所を枠の中心側へ寄せると、cover でも重要部分が切れにくくなります。

レスポンシブで画像の比率を一定に保つには。

枠に aspect-ratio を指定し、中の img に object-fit: cover を組み合わせます。img へ本来の width と height 属性も入れておくと、読み込み時のレイアウトのガタつきも抑えられます。

原因が分からないときはどこから確認すべきですか?

まず自分だけの問題か全員の問題かを分けます。次にシークレットウィンドウ、別ブラウザ、スマホで確認し、ファイル構成・相対パス・キャッシュ・認証設定を順に見ます。

関連記事

トラブルシュート

画像カードの高さが揃わずガタガタになるときの対処

商品やブログのカードを並べると画像の縦横比がまちまちで高さがガタガタになると困っているUI制作者向け。aspect-ratioとobject-fitを組み合わせて揃ったグリッドを作る方法を解説します。

4分で読める
トラブルシュート

背景画像が表示されないときの原因と対処

CSS で background-image を指定しても背景が出ない原因は、パスのミス・高さゼロ・url() の書式エラーに集中します。闇雲に書き換える前に、どのパターンかを素早く見分けるチェック手順を解説します。

5分で読める
トラブルシュート

公開後にJavaScriptが動かないときの原因と直し方

ローカルでは動いていたボタンやアニメーションが公開後に反応しなくなった方向け。JavaScriptが止まる主な原因をファイルパスや読み込み順の観点で切り分け、自分で直せるかどうかを判断できます。

5分で読める
トラブルシュート

公開後に動画が再生されないときの対処

デモページや資料に埋め込んだ動画が公開後に再生されなくなった方向け。動画ファイルの添付漏れ・パスのズレ・ブラウザの自動再生制限を症状ごとに切り分け、自分でできる確認と対処を把握できます。

4分で読める
トラブルシュート

公開したHTMLのフォームが送信できないときの対処

問い合わせフォームやアンケートの送信ボタンが押せない・エラーになる方向け。静的ファイル公開ではフォームの動作に制約がある理由を理解し、外部サービス連携などの現実的な解決策を選べるようになります。

5分で読める
「トラブルシュート」の記事をもっと見る →