調べる前に、幅と崩れた領域を揃える

CSSを編集できるサイトで、対象URL、Chrome、画面の幅と高さ、拡大率、期待する列数を記録します。この例は390×844px、拡大率100%で比較しています。まず本文が潰れた領域を選んでください。違う画面幅で比べると、修正の効果と条件の違いを区別できません。

検証は自分が管理するページの隔離環境で行います。DevTools内の変更は調査用で、ソースを修正したことにはなりません。ここに掲載した画像は現在のHTMLに履歴のCSSを適用した再現であり、過去の本番画面を保存したものではありません。

見た目を左右したのは、クラス二つの指定だった

問題のページにはstatic-page-shellとhas-asideの二つのクラスが付いていました。通常幅では260pxのサイドバーと残り幅の本文を並べるため、.static-page-shell.has-asideで2列を指定していました。一方、900px以下の上書きは.static-page-shellだけで1列を指定していました。

この二つの指定は詳細度(セレクタの重み)が違います。出所・重要度・カスケードレイヤーの条件が同じルールを比べた場合、クラス二つの0-2-0が、クラス一つの0-1-0より強くなります。メディアクエリ内に書いたこと自体は、この差を逆転させません。スマホ用指定が後にあっても、2列の指定が残る条件でした。

修正前の構造と、同じ詳細度で上書きする修正
.static-page-shell.has-aside {
  grid-template-columns: 260px minmax(0, 1fr);
}
/* 修正:スマホ側にも二つのクラスを指定 */
@media (max-width: 900px) {
  .static-page-shell.has-aside {
    grid-template-columns: 1fr;
  }
}

390pxで再現し、幅を測る

10月6日のローカル再現では、過去のCSSでグリッドの列幅が260pxと48pxになり、ページが画面幅を30px超えました。これは当時の記録にあった「スマホでもサイドバー列が残る」という説明と一致します。フォームの見かけだけでなく、グリッドの計算値を測ることで原因を絞れます。

修正後のCSSでは列幅が342pxの1列となり、横方向のはみ出しは0pxでした。フォーム幅は248pxで、残りは本文領域の余白です。今回は2026年10月6日時点のHTMLに過去のCSSを適用した比較です。当時の本番画面と画素単位で同じ表示ではありません。実機ではOS、フォント、ブラウザの文字拡大によっても折り返しが変わります。

修正前のCSSで問い合わせ本文が一文字ずつ折り返すローカル再現画面
修正前のCSS:サイドバー列が残り、本文が縦に細く折り返す。390pxでの再現。
修正後のCSSでフォームが一列に収まるローカル再現画面
修正後のCSS:一列に切り替わり、横方向のはみ出しが解消。2026年10月6日の比較時の画面で、現在のデザインとは異なります。

10月6日のローカル再現結果

値はこのページと環境の測定結果です。スマホ全機種の表示を保証する数値ではありません。

測定項目過去のCSS修正後のCSS
グリッド列幅260px + 48px342px(1列)
ページのはみ出し30px0px
確認条件Chrome / 390 × 844同じHTML・同じ幅

開発者ツールで、消えていない指定を探す

Chromeの対象ページで開発者ツールを開き、デバイスモードで幅390px・高さ844pxを指定します。要素選択で潰れた本文を選び、Elementsの親要素を辿ってstatic-page-shellとhas-asideが付いたグリッドへ移動します。本文の文字のスタイルだけを見ると、列幅を決める指定を見落とします。

Stylesの絞り込みにgrid-template-columnsを入力します。打ち消されている1frと、採用されている260px minmax(0, 1fr)を比べ、セレクタと適用幅を確認します。Computedで同じプロパティを探すと、計算後の列幅を確認できます。表示名や配置はDevToolsの版で変わるため、プロパティ名を手がかりにします。

採用されている2列の宣言をDevToolsで一時的に無効化し、一列に戻るか確認します。戻れば、その宣言が関わっていると判断できます。戻らなければ、子要素の固定幅・min-width・別のグリッド等を確認し、詳細度だけが原因と決めつけません。

今回は出所・重要度・カスケードレイヤーの条件が同じため、スマホ側も二つのクラスを指定して詳細度を揃えました。!importantを追加する前に、出所・レイヤー・重要度・詳細度・記述順を確認します。DevToolsの変更をソースへ反映し、再読み込み後にも一列になることを確かめます。

修正したページだけで終えない

同じstatic-page-shellを使う固定ページにも影響が出るため、問い合わせ、運営情報、編集方針、規約を両方の幅で確認します。目次、長いURL、表、入力欄は、本文が収まっていても単独ではみ出す場合があります。横幅の確認には下の式が使えますが、横スクロールを意図した表まで禁止するものではありません。

画面の確認では入力、エラー表示、キーボード移動まで通します。自動点検は幅・コントラスト・リンクなどの検出に使い、文字の読みやすさと操作の流れは画面でも見ます。最初に不具合を見つけた幅だけでなく、390pxと1280px、さらに境界付近の幅で点検すると、上書きの漏れを見つけやすくなります。

ページの横方向のはみ出しを測る(コンソール)
document.documentElement.scrollWidth
  - document.documentElement.clientWidth
// ページ全体のはみ出しがなければ0。表の内部スクロールは別に確認。

完了の記録は、直した条件と残る確認を並べる

390pxで本文が読めるかに加え、900pxの境界付近と1280pxでも期待する列数を確認します。長いURL、表、入力エラーを表示し、ページ全体が押し広げられないかを見ます。表の中だけで横スクロールする状態は、ページ全体のはみ出しと分けて記録してください。

キーボードでリンクとフォームへ移動できること、200%の拡大でも操作できることも確認します。 ブラウザのズームとDevToolsの端末表示の縮尺は別に記録し、プレビューを大きくしただけで200%ズームの操作確認にはしません。デバイスモードでの結果を実機確認と記録しないでください。実機を確認していない場合はその範囲を残し、修正箇所・幅・結果・未確認事項を次の担当者へ渡します。

表示崩れを直した後の記録
対象URL/OS・ブラウザの版:
確認日時/表示を確認した担当:
画面幅・高さ/拡大率:
期待する表示と、困っている操作:
採用されていたCSS/修正した担当と指定(未調査なら未確認):
390px・境界付近・1280pxの結果:
長い文字列/フォームエラー/キーボード/200%拡大:
実機の確認状況/未確認事項:
次の作業と再現・再確認の条件:
確認する担当/確認予定日: