【CSS入門】はみ出した部分隠すoverflow:hiddenを使いこなそう!効かない時の対処法も

公開日: 2021.11.10
更新日: 2024.01.04
はみ出した部分隠すoverflow:hiddenを使いこなそう

プログラミング学習で模写したWebサイトや、制作したWebサイトで「画面揺れ」や「謎の空白」などの問題は、一度は誰しもが経験しているでしょう。

「何となく使っていたけど、 overflow:hiddenって結局何?必要? 」

「どう頑張っても要素が画面に収まらない…」

今回は、そんな悩みを持つ方のためにoverflow:hiddenの使い方と効かない時の対処法を解説します。

この記事を読んでわかる内容は以下の通りです。

  • overflowプロパティの4つの値の特徴と使い方
  • overflow: hiddenの解除方法と注意点
  • overflowプロパティが効かない時の原因と対処法

overflow:hiddenは、はみ出した要素を隠すだけの役割ではありません。

意外と使い勝手の良いoverflow:hiddenを、この機会にマスターしましょう!

CSSプロパティのoverflowとは?

overflow:hiddenの指定でお馴染みの「overflow」とは、CSSのプロパティの一つ。

要素のボックスからはみ出た部分を隠したり、スクロールできる状態する役割を担う便利なプロパティです。

overflowプロパティで指定できる値は、以下の4つ。

  1. visible
  2. auto
  3. hidden
  4. scroll

では、それぞれの特徴や使い方を詳しく見ていきましょう。

1.はみ出たまま表示されるoverflow: visible(初期値)

visibleは、overflowプロパティの初期値で、はみ出た部分はそのまま表示されます。

例として、以下のようなパターンが挙げられます。

<!-- HTMLコード -->
<p class="box">ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテキスト。ダミーテ</p>
/* CSSコード */
.box {
  width: 100px;
  height: 100px;
  overflow: visible;
  background: rgb(120, 197, 120);
}

▼ブラウザ表示▼

ブラウザ表示

上記ではvisibleを指定していますが、初期値ですので、通常はoverflowプロパティを指定する必要がありません。

2.ブラウザにより表示が変わるoverflow: auto

autoは、はみ出た部分の処理をブラウザが自動的に指定してくれるプロパティです。

例として、以下のようなパターンが挙げられます。

<!-- HTMLコードは1と同様 -->
/* CSSコード */
.box {
  width: 100px;
  height: 100px;
  overflow: auto;
  background: rgb(120, 197, 120);
}

▼ブラウザ表示▼

ブラウザ表示

上記の場合は、縦方向に長い要素のため、スクロールがでるscrollの指定がされています。

3.はみ出た部分を隠して表示するoverflow: hidden

hiddenは、要素のボックスからはみ出た部分を隠して非表示にしてくれるプロパティです。

例として、以下のようなパターンが挙げられます。

<!-- HTMLコードは1と同様 -->
/* CSSコード */
.box {
  width: 100px;
  height: 100px;
  overflow: hidden;
  background: rgb(120, 197, 120);
}

▼ブラウザ表示▼

ブラウザ表示

上記では、ボックスからはみ出している要素を隠していますが、主に、空白部分の処理として使用されるパターンが多いです。

4.はみ出た部分を隠して、スクロールで表示されるoverflow: scroll

scrollは、要素のボックスからはみ出した部分をスクロールで表示できるようにするプロパティです。

例として、以下のようなパターンが挙げられます。

<!-- HTMLコードは1と同様 -->
/* CSSコード */
.box {
  width: 100px;
  height: 100px;
  overflow: scroll;
  background: rgb(120, 197, 120);
}

▼ブラウザ表示▼

ブラウザ表示

以下のように、「white-space:nowrap」を指定することで横スクロールを表示させることも可能です。

/* CSSコード */
.box {
  width: 100px;
  height: 100px;
  overflow: scroll;
  background: rgb(120, 197, 120);
  white-space: nowrap;
}

▼ブラウザ表示▼

ブラウザ表示

おまけ:テキストのはみ出しにはtext-overflowプロパティを使おう!

要素のはみ出しには「overflow: hidden」を指定しますが、テキストのはみ出しには「text-overflow」プロパティが利用できます。

はみ出したテキストを完全に非表示にするという指定ではなく、はみ出す部分を「…」で省略表示してくれる「text-overflow: ellipsis」の指定が可能です。

ただし、有効にするためには、以下のプロパティを設定する必要があります。

/* CSSコード */
.box {
  /* オーバーした要素を非表示にする*/
  overflow: hidden;

  /* 改行を半角スペースに変換することで、1行にする */
  white-space: nowrap;

  /* 幅を指定しないとテキストの長さによって要素の幅が変わるため指定 */
  width: 120px;

  /* オーバーしたテキストを3点リーダーにする */
  text-overflow: ellipsis;
}

▼ブラウザ表示▼

また、「display: flex」を指定している場合には上手く動作しない場合があるので注意しましょう。

縦だけor横だけにoverflowを指定することも可能

overflow: scrollにおいては、縦・横だけにスクロールバーを出現させる指定をすることができます。

<!-- HTMLコード -->
<!-- 横スクロール(overflow-x:scroll;)指定 -->
<ul class="box1">
  <li>リスト1</li>
  <li>リスト2</li>
  <li>リスト3</li>
</ul>

<!-- 縦スクロール(overflow-y:scroll;)指定 -->
<ul class="box2">
  <li>リスト1</li>
  <li>リスト2</li>
  <li>リスト3</li>
</ul>
/* CSSコード */
.box1 {
  width: 100px;
  height: 100px;
  overflow-x: scroll;
  background: rgb(120, 197, 120);
  margin: 20px;
}

.box2 {
  width: 100px;
  height: 100px;
  overflow-y: scroll;
  background: rgb(196, 197, 120);
  margin: 20px;
}

▼ブラウザ表示▼

ブラウザ表示

overflow:hiddenを使う時の注意点

overflow:hiddenの指定は、floatの回り込みを解除する時にも利用できます。

しかし、意図的にはみ出す用途まで隠してしまうので、floatの回り込みを解除する目的での使用はあまりおすすめできません。

floatの解除は、「clear:both」で行うか、そもそもfloatを使用しないなどの対策を取りましょう。

また、レスポンシブ対応などで、指定したoverflow:hiddenを解除したい場合、以下のような方法が挙げられます。

  • overflow:visibleで解除
  • overflow:initialで解除

autoにしてしまうとスクロールバーが出現してしまうので、必ず上記のどちらかで解除しましょう。

ただし、initialはIEでサポートしていないため注意が必要です。

overflow:hiddenが効かない時の原因と対処法

「なぜかoverflow:hiddenが効かない…」といった問題は、多くのWeb制作者が一度は経験しているでしょう。

overflow:hiddenが効かない場合は、主に、子要素に以下のような指定をしていることが原因と考えられます。

position:absolute;

上記のような記述をしている場合、通常は親要素に以下の指定をしています。

position:relative;

しかし、overflow:hiddenが効かない場合、親要素に上記の指定が記述されていないケースが多いので、一度確認してみましょう。

overflow: scrollが効かない場合の原因と対処法

overflow: scrollが効かない場合は、以下の条件を満たしていないことが原因として考えられます。

  • overflow-y: scrollが効かない:要素にheightを指定していない
  • overflow-x: scrollが効かない:子要素にwidth、またはwhite-space: nowrapを指定していない

縦スクロールを表示させるoverflow-yプロパティの場合は、heightを指定すれば問題を解決できます。

ただし、auto以外の数値で指定しましょう。

横スクロールを表示させるoverflow-xプロパティの場合は、子要素にwidthを指定するか、white-space: nowrapを指定すれば反映させることができます。

overflowプロパティをマスターして、要素のはみ出しやスクロールの悩みを解決!

今回は、CSSのoverflowプロパティの特徴や使い方、使用する上での注意点などを解説しました。

以下は、この記事のまとめです。

  • overflowは要素のはみ出しをコントロールする便利なプロパティ
  • scrollは、縦だけや横だけの指定も可能
  • float解除にoverflow:hiddenはNG
  • overflow:hiddenが効かない時はpositionプロパティをチェック!

overflowは、要素のはみ出しをコントロールする上で非常に便利なプロパティです。

それぞれの指定や、効かない場合の対処法などをマスターして、謎の空白やはみ出すイライラから解放されましょう!


プログラミングやパソコンを使って働きたい!

そのように考え、成長しているIT業界への転職を考えている方も増えてきました。

『IT業界に興味はあるけど、よくわからない…』
『パソコンとかそもそも苦手なのに私なんかにできるのかな』
『エンジニアって聞くけど難しそう』

反対にこのような声も聞く事があります。

そう考えている方は、一度ぜひ転職に成功したエンジニアの方のインタビューをご覧ください!

\プログラミングを学んで/
人生を変えた3名

インタビュー記事一覧 >

関連記事

資料請求

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

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

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

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

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

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

    資料をダウンロードする

© 2024 WEBCAMP MEDIA Powered by AFFINGER5