トラブルシュート

overflow:hiddenで中身が切れて見えないときの対処

角丸やはみ出し対策でoverflow:hiddenを指定したら、ツールチップやドロップダウン、影まで切れてしまった、という悩みはよくあります。overflowの仕組みを理解し、必要なクリップと表示したい要素を両立させる対処を整理します。

overflow:hiddenが何を切るのか

overflow:hiddenは、要素の枠(パディングボックス)からはみ出した子要素を切り取って非表示にする指定です。横スクロールを抑えたり、角丸の内側に画像を収めたりするのに便利な反面、枠から外に出したい要素まで一律に切ってしまいます。

よくあるのは、カードに角丸とoverflow:hiddenを付けた結果、ホバーで出るツールチップやドロップダウンメニュー、要素の外側に広がるドロップシャドウまで切れてしまうケースです。意図したクリップと意図しないクリップを区別することが出発点です。

親子関係を見直して切れる範囲を限定する

中身が切れる場合、まずどの祖先要素にoverflow:hiddenが付いているかを特定します。直接の親だけでなく、何階層も上の要素のoverflowが効いていることもあるため、開発者ツールで上位要素を順にたどると見つけやすくなります。

対処の基本は、overflow:hiddenの適用範囲を、本当にクリップが必要な部分に限定することです。たとえば角丸の画像だけを別のラッパーで囲み、そこにだけoverflow:hiddenを付ければ、外に出したいツールチップは親要素の外で自由に表示できます。

症状別チェック表

overflow:hiddenで中身が切れて見えないは、症状を分けずに直そうとすると原因探しが長引きます。まず「自分だけで起きるのか」「全員で起きるのか」「特定ブラウザだけか」「差し替え後だけか」を切り分けます。

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

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

外に出したい要素はポップアップ層に逃がす

ツールチップやメニューのように要素の外へ大きく広がるものは、クリップされる親の内側に置かないのが確実です。bodyの直下など切り取られない場所に描画し、表示位置だけをスクリプトで合わせると、親のoverflowに左右されません。

新しいブラウザではpopover属性や、最上位に表示する仕組みを使うと、こうした「親の枠を越えて表示したい要素」を扱いやすくなります。影の切れだけが問題なら、overflow:hiddenをやめてborder-radiusとともにクリップ範囲を調整する方法も検討できます。

切れる問題を切り分ける手順

次の順で確認すると、どこで切られているか特定しやすくなります。

  1. 切れている要素を選択し、祖先をたどってoverflowがhiddenの要素を探す
  2. そのoverflowが横スクロール抑制や角丸クリップなど、本当に必要か判断する
  3. 必要なら、クリップ対象だけを別ラッパーで囲んでoverflowをそこに限定する
  4. 外に広がるツールチップやメニューはクリップされない層へ移す
  5. 影が切れるだけならoverflow指定の要否を見直す
  6. 複数の画面幅で、必要な要素が表示され不要なはみ出しが消えたか確認する

意図どおりの表示を共有で確認する

overflowの調整は、ある画面幅では直っても別の幅で再び切れる、ということが起こりがちです。複数の画面サイズや実機での確認が欠かせません。

修正版を関係者に見てもらうなら、ギガサイト便にHTMLやZIPをドロップして共有URLを発行すると、各自が手元の端末でツールチップやメニューが正しく表示されるか確かめられます。同じURLのまま中身を差し替えられるため、クリップ範囲を調整するたびに見比べてもらえます。一時公開ページにはnoindexが付くので検索結果に出ず、必要に応じてパスワードや公開期限を設定して共有範囲を絞れます。

よくある質問

横スクロールを消したいのですが、overflow:hidden以外に方法はありますか。

まず横にはみ出している原因要素を特定し、widthの指定ミスやnegative marginを直すのが根本対処です。それでも残る場合はbodyやラッパーにoverflow-x:hiddenを限定して付けると、縦方向のクリップを避けつつ横スクロールだけ抑えられます。

角丸の中に画像を収めつつ、影は外に出したいです。

角丸とoverflow:hiddenは画像用のラッパーだけに付け、影はそのラッパーの外側にある親要素に設定すると両立できます。クリップが必要な範囲と影の範囲を別の要素に分けるのがポイントです。

overflow:clipとoverflow:hiddenの違いは何ですか。

どちらもはみ出しを切り取りますが、overflow:clipはスクロールを生まず、より純粋にクリップだけを行います。スクロール領域を作りたくない場合はclipが適することがあります。ブラウザ対応を確認したうえで使い分けてください。

ドロップダウンが親に切られます。スクリプトを使わず直せますか。

切っている親のoverflowを外せるなら、それが最も簡単です。外せない場合は、ドロップダウンをその親の外に配置するか、popover属性など最上位に表示する仕組みを使うと、スクリプトでの位置合わせを最小限にできます。

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

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

関連記事

トラブルシュート

影(box-shadow)や角丸が効かないときの原因と対処

box-shadowで付けた影が見えない、border-radiusの角丸が四角いままと困っている方向け。overflowによる切り取りや背景・サイズの前提漏れという代表パターンを症状ごとに整理します。

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

表(table)が画面からはみ出すときの対処

PCでは収まる表がスマホでレイアウト全体を崩してはみ出す問題を、overflowやレスポンシブ向けのCSS手法で解決したい人向けに、列の多い表を破綻させない具体策を整理します。

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

Mixed Content警告でhttpリソースがブロックされるときの対処

HTTPSのページなのに画像やスクリプトが表示されずConsoleに「Mixed Content」と出て頭を抱えているすべての人へ。ブラウザがhttpリソースをブロックする仕組みから、該当箇所の特定と修正・回避策の選び方まで具体的に説明します。

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

CSPでJS/CSSがブロックされるときの対処

ページは開くのにボタンやアニメーションが一切反応せずConsoleに「Refused to execute」が並ぶ状況に困っているフロントエンド担当者向け。CSPのディレクティブの読み方と、JS・CSSのブロックを解除するための設定変更の判断軸を整理します。

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