CSSのoverflowを使ってはみ出た表示の指定をする方法【初心者向け】

初心者向けにCSSでoverflowを使って要素からはみ出た際の表示の指定方法について解説しています。レイアウトが崩れないように実際の業務でも使える知識です。実際にコードを書きながら例をもとに説明しているので、ぜひご覧ください。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

今回は、CSSのoverflowではみ出た表示の指定をする方法を説明します。

文章が長くはみ出てしまうことがある場合に、手動で改行などせずに事前に指定できるので覚えておくと良いでしょう。

そもそもCSSが何かよく分からない場合は、先にCSSの書き方をご覧ください。

 

なお本記事は、TechAcademyのWebデザインオンラインブートキャンプのカリキュラムをもとに執筆しています。

 

大石ゆかり

田島メンター!CSSで枠からはみ出た文章の折り返しだったりをしたいんですけど・・・

田島悠介

そういう時はoverflowっていうプロパティを使うと便利だよ!

大石ゆかり

例えば、枠内でスクロールして見れるとかもできますか?

田島悠介

全然できるよ!種類もいくつかあるから1個ずつ見ていこうか!

大石ゆかり

わかりました〜!

 

目次

 

overflowを使う時の値の種類

「overflowプロパティ」は、ボックスの範囲内に内容が入りきらない時、はみ出した部分をどうするのかを設定できます。

「overflowプロパティ」は4種類の値を持ちます。

  • visible:初期値。ボックスからはみ出して表示される
  • scroll:入りきらなかった内容がスクロールして見られる
  • hidden:はみ出た部分は表示されない
  • auto:ブラウザに依存する(一般的にはスクロールと同じ状態になる)

それぞれ詳しく見ていきましょう。

 

「visible」

ボックスからはみ出して表示されます。これが初期値になっています。

初期値というのは設定しない場合、「overflow: visible;」が設定されているのもと見なされます。

「Internet Explorer」では内容がはみ出すのではなく、ボックスが内容に合わせて拡張され、「chrome」や「Firefox」では領域をはみ出して表示します。

 

「scroll」

入りきらなかった内容はスクロールして見られるようになります。

スクロールバーが表示されるので、スクロールバーを実装して見せたいときに使えるでしょう。ただし、「Internet Explorer」では常時スクロールバーが表示されるため、デザインの際注意が必要です。

 

「hidden」

はみ出た部分は表示されず、HTMLにないものとして処理されます。

 

「auto」

ブラウザに依存して自動で決まります。一般的にはスクロールして見られるようになり、どのブラウザでもだいたい同じものになると思います。

 

[PR] HTML/CSSで挫折しない学習方法を動画で公開中

実際に書いてみよう

実際にコードを書いてみましょう。

HTML

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>CSS overflow</title>
    <link rel="stylesheet" type="text/css" href="sample.css">
  </head>
  <body>
    <div class="hid">
      <p>
        The European languages are members of the same family. Their separate existence is a myth. For science, music, sport, etc, Europe uses the same vocabulary. The languages only differ in their grammar, their pronunciation and their most common words. Everyone realizes why a new common language would be desirable: one could refuse to pay expensive translators.
      </p>
    </div>
    <br>
    <div class="scr">
      <p>
        The European languages are members of the same family. Their separate existence is a myth. For science, music, sport, etc, Europe uses the same vocabulary. The languages only differ in their grammar, their pronunciation and their most common words. Everyone realizes why a new common language would be desirable: one could refuse to pay expensive translators.
      </p>
    </div>
    <br>
    <div class="vis">
      <p>
        The European languages are members of the same family. Their separate existence is a myth. For science, music, sport, etc, Europe uses the same vocabulary. The languages only differ in their grammar, their pronunciation and their most common words. Everyone realizes why a new common language would be desirable: one could refuse to pay expensive translators.
      </p>
    </div>
  </body>
</html>

CSS

div.hid{
  width: 200px;
  height: 100px;
  overflow: hidden;
  background-color: #FF9999;
}

div.scr{
  width: 200px;
  height: 100px;
  overflow: scroll;
  background-color: #99FF99;
}

div.vis{
  width: 200px;
  height: 100px;
  overflow: visible;
  background-color: #9999FF;
}

 

実行すると以下のように表示されます。

 

それぞれ表示を確認してみましょう。

 

hidden

hiddenの場合、このようにはみ出た部分は表示されません。スクロールさせて表示することもできません。

 

scroll

scrollの場合、入りきらなかった内容はスクロールして見られるようになります。デフォルトの場合、文字が div の横幅 width で折り返され、縦方向にスクロールバーが表示されます。

cssに white-space:nowrap (自動的に改行しないという意味)を指定することで、横方向にスクロールさせることも可能です。

div.scr{
  width: 200px;
  height: 100px;
  overflow: scroll;
  white-space:nowrap;
  background-color: #99FF99;
}

この他、overflow-x や overflow-y プロパティを使い、縦と横のスクロールバーの表示を細かく制御することも可能です。

 

visible

visibleの場合、ボックスからはみ出して表示されます。青の部分がdivボックスです。デフォルトの場合、文字が div の横幅 width で折り返され、縦方向にはみ出して表示されます。

こちらもscrollと同様、cssに white-space:nowrap を指定することで、横方向にスクロールさせることも可能です。

div.vis{
  width: 200px;
  height: 100px;
  overflow: visible;
  white-space:nowrap;
  background-color: #9999FF;
}

また、ボックスの高さを指定しないと、はみ出しに合わせてボックスの高さも自動的に変わるようになります。

div.vis{
  width: 200px;
  /* height: 100px; 高さをコメントアウト */
  overflow: visible;
  background-color: #9999FF;
}

 

このように、overflowの指定によって、表示が変わることが分かりますね。

続いて、「auto」を適用してみましょう。

HTML

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>CSS overflow</title>
    <link rel="stylesheet" type="text/css" href="sample.css">
  </head>
  <body>

    <div class="aut">
      <p>
        The European languages are members of the same family. Their separate existence is a myth. For science, music, sport, etc, Europe uses the same vocabulary. The languages only differ in their grammar, their pronunciation and their most common words. Everyone realizes why a new common language would be desirable: one could refuse to pay expensive translators.
      </p>
    </div>

  </body>
</html>

CSS

div.aut{
  width: 200px;
  height: 100px;
  overflow: auto;
}

 

ブラウザによって変わりますが、だいたい「scroll」が適用されるはずです。

スクリーンショット 2016-08-31 17.34.41

「overflowプロパティ」はデフォルトで「visible」が設定されており、はみ出したときにそのまま表示されてしまいます。

 

以上、overflowの使い方について解説しました。

CSSを用いてHTMLをどのように見せたいのか考え、コーディングを行っていきましょう。

田島悠介

一応一通り説明したんだけど、どうかな?

大石ゆかり

scrollするのは結構便利ですね!

田島悠介

ボックス内に入りきらない時は「overflow:auto;」で基本設定しておけば間違いないと思うよ!

大石ゆかり

自動で折り返してスクロールバーもついてるので、使ってみますね♪

また、現役エンジニアから学べる無料のプログラミング体験会もオンラインで実施しているので、ぜひ参加してみてください。

[お知らせ]TechAcademyでは初心者でも最短4週間でオリジナルWebサイトを公開できるWebデザインオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。