ZeroPlus Gateについて

\ シェア /

FacBook
Twitter
LINE
はてブ
PPocket
ZeroPlus Media > Web制作 > HTML/CSS > 【CSS】overflowの使い方解説!要素のはみ出し解決

【CSS】overflowの使い方解説!要素のはみ出し解決

HTML/CSS

2022/01/06

2023/04/14

CSS overflow 解説サムネイル

「親要素からはみ出た要素を隠す方法が知りたい」

「overflowの使い方を詳しく知りたい」

子要素の内容が増えサイズが大きくなると、親要素の領域からはみ出す場合があります。

要素のはみ出しに対処するにはoverflowプロパティの使用が有効です。

ただしoverflowを指定してもうまく効かず、要素がはみ出たままと、悩まれる場合も多いのではないでしょうか?

この記事ではoverflowの使用方法と、うまく効かない場合の対処方法について解説します。

    この記事で身につく内容
    • overflowの使用方法
    • overflowを縦横個別に指定する方法
    • overflowがうまく効かない場合にチェックすべきポイント

    ZeroPlus Gateについて

    プログラミング学習でこのような経験はありませんか?

    1. 目標に向けて何を学べば良いかわからない
    2. 調べても解決策が見つからない
    3. 現場レベルのスキルが身につくのか不安

    これらの悩みは、学習環境を整えることで全て解決することができます。

    ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

    1. なんでも相談できる専属メンター
    2. いつでも技術相談ができるプロ講師
    3. 元IT企業CTO監修のカリキュラム

    条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
    ただし、無料サービスの提供には参加者の数に制限があります。

    少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

    今すぐZeroPlus Gateの詳細を見る

    overflowとは?

    overflowとは親要素からの子要素のはみ出しに対し、処置をするCSSプロパティです。

    親要素から子要素がはみ出し状態を、実例で確認していきましょう。

    サンプルとして幅300px×高さ150pxのcontainerを用意します。

    <div class="container">
      <p>1:overflowプロパティを使えば</p>
      <p>2:ボックス要素からはみ出た部分を</p>
      <p>3:隠してスクロール領域にしたり、非表示にできます</p>
      <p>4:overflowプロパティを</p>
      <p>5:適切に使いこなして</p>
      <p>6:余白部分を処理していきましょう</p> 
    </div> 
    .container{
      width: 300px;
      height: 150px;
      border: 1px solid black;
    } 

    要素のはみ出し

    オレンジの枠で示した箇所が要素のはみ出しを示しています。

    overflowを用いて、はみ出した部分の見え方を指定することが可能です。

    overflowの使い方

    overflowの使い方について解説します。

    overflowで主に使用する4つの値の指定内容を、一覧にまとめました。

    指定内容
    visibleはみ出した要素をそのまま表示させる
    scrollはみ出した要素が非表示になり、スクロール操作で内容を確認できる
    hiddenはみ出した要素を完全に非表示にし、スクロールによる内容の確認はできない
    auto必要に応じてscrollと同じ処理をする

    各値の使用方法について詳しく解説していきましょう

    1.overflow: visible;の使い方

    overflowの値にvisibleを指定すると、はみ出した要素はそのまま表示されます。

    .container{
      /*width、height、border指定省略*/
      overflow: visible;/*はみ出た要素を表示させる*/
    }

    visible解説

    visibleは初期値なので、通常記述する必要はありません。

    そのためほとんど指定する機会のない値と言えるでしょう。

    ZeroPlusgate50教材の動画

    2.overflow: scroll;の使い方

    overflowの値にscrollを指定すると、はみ出した部分は非表示になり、非表示になった部分はスクロール領域へ隠されます。

    スクロールバーがボックスの端に表示され、非表示の部分の内容はスクロール操作で確認可能です。

    .container{
      /*width、height、border指定省略*/
      overflow: scroll;/*はみ出した部分をスクロール領域に隠す*/
    } 

    scroll解説

    上記のようにボックスの端にスクロールバーが表示され、はみ出たテキストはスクロール操作で確認できます。

    はみ出た要素を非表示にしつつ、スクロールを可能にしたい場合にはscrollを使用します。

    もしスクロールバーを非表示にしたいと考える場合は、こちらの記事を読んでいただくのがおすすめです。

    scroll指定において、スクロールバーを非表示にする方法について理解できるようになります。

    3.hidden

    hiddenを指定すると、はみ出した部分は完全に非表示になります。

    scrollと違い、非表示になった箇所をスクロールで確認することはできません。

    .container{
      /*width、height、border指定省略*/
      overflow: hidden;/*はみ出した部分を非表示にする*/
    } 

    hidden解説

    はみ出した部分を完全に隠したい場合にはhiddenを指定しましょう。

     

    4.overflow: auto;の使い方

    overflowの値にautoを指定すると、scrollと同じく要素のはみ出しを非表示にしてスクロールを可能にします。

    scrollとの違いは要素のはみ出しが生じた時のみ、スクロールバーを表示させる点です。

    実例をもとに確認していきましょう。

    .container{
      /*width、height、border指定省略*/
      overflow: auto;/*はみ出した部分をスクロール領域にする(はみ出した部分がある時だけスクロールバーが表示される)*/
    } 

    scrollとautoは、いずれもはみ出した箇所をスクロール領域に隠す値です。

    はみ出しがある時にだけスクロールバーを表示させたい場合は、autoを使用しましょう。

     

    overflowを縦横個別に指定する方法

    overflowを縦横個別に指定する場合には、「overflow-x」と「overflow-y」を用います。

    「overflowーx」と「overflow-y」の使い方について解説します。

    プロパティ名処理内容
    overflow-x横方向へのはみ出しに対し処理を指定する
    overflow-y縦方向へのはみ出しに対し処理を指定する
    overflow縦横のはみ出しに対し一括で処理を指定する

    先に紹介していたoverflowは、縦横両方の要素のはみ出しに対し一括で同じ処理を指定するプロパティです。

    実例を用いて縦横個別にoverflowを指定する方法を、確認していきましょう。

    サンプルとして横方向(overflow-x)にhidden、縦方向(overflow-y)にscrollを指定してみます。

    .container{
      /*width、height、border指定省略*/
       white-space: nowrap;/*テキストを改行をさせないようにする*/
       overflow-x: hidden;/*横方向はみ出した部分を非表示にする*/
       overflow-y: scroll;/*縦方向はみ出した部分を非表示にする*/
    } 

    xy解説

    縦方向のはみ出しに対してはスクロール可能、横方向のはみ出しに対しては非表示指定できました。

    このように縦横のはみ出しに対して個別の値を指定する場合、overflow-xとoverflow-yを使用します。

    ショートハンドを使用しoverflowを縦横個別に指定

    overflowを使って、overflow-xとoverflow-yの指定をまとめて行うことが可能です。

    overflow:値1(横方向への処理を指定) 値2(縦方向への処理を指定);

    このように複数プロパティの指定をまとめて記述する方法をショートハンドと呼びます。

    実例を用いて確認していきましょう。

    .container{
      /*width、height、border指定省略*/
       white-space: nowrap;/*テキストを改行をさせないようにする*/
       overflow: hidden scroll;/*横方向に「hidden」、縦方向に「scroll」を指定*/
    } 
    

    上記のように横方向のはみ出しは非表示、縦方向のはみ出しはスクロール領域へと隠れました。

    このようにoverflowだけで、overflow-xとoverflow-yの指定をまとめて実行できるのです。

    ZeroPlusgate50教材の動画

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

    overflowが効かない時の原因と対処法について解説します。

    縦横どちらの方向へのはみ出しに対して、overflowを指定しているかにより対処方法が異なります。

    overflow: hidden;を指定したcontainerをサンプルとして確認していきます。

    overflow-yが効かない場合の原因と対処法

    overflow-yが効かない場合の原因と対処の方法について解説します。

     

    親要素に高さを指定していない

    親要素に高さ(height)を指定しない場合overflow-yが効きません。

    ボックス要素に高さを指定しない場合、親要素のcontainerのheightは初期値のautoの状態だからです。

    heightがautoに指定されていると、親要素の高さは子要素の高さに合わせて可変します。

    つまり、子要素のはみ出しが生じないということです。

    yが効かない場合解説

    containerの高さがテキストの高さに応じて可変するので、テキストのはみ出しが生じません。

    そのためoverflow-yが効かないのです。

    対処法としてcontainerにheightを指定しましょう。

    containerの高さが可変しなくなり、テキストのはみ出しに応じてoverflow-yが効くようになります。

    overflow-xが効かない場合の原因と対処方法

    overflow-xが効かない場合の原因と対処方法について解説します。

     

    親要素に幅を指定していない

    親要素に幅(width)を指定しない場合、overflow-xが効かないことがあります。

    要素にwidthを指定しない場合、値はautoとなります。

    親要素がbodyの場合、containerがブラウザ幅に合わせて可変するので要素のはみ出しは発生しません。

    よってcontainer-xが効かないのです。

    xが効かない場合解説①

    上記のようにcontainerが親要素のbodyの幅に合わせ可変するため、横方向要素のはみ出しが発生しません。

    よってoverflow-yが効かなくなってしまうのです。

    対処方法としてcontainerにwidthを指定しましょう。

    containerの幅を固定すればoverflowは効くようになります。

     

    子要素のテキストに改行の禁止を指定していない

    子要素がテキストの場合に限り、overflow-xが効かない原因はもう一つあります。

    テキストに対して改行の禁止(white-space:  nowrap;)を指定しなければ、overflow-xが効きません。

    white-spaceプロパティの初期値がnormalだからです。

    white-space: normal;の場合、テキストが親要素の端まで到達すると自動的に改行します。

    そのためテキストのはみ出しが発生しなくなるのです。

    xが効かない場合解説②

    テキストに改行の禁止を指定しない場合、自動的にテキストがcontainerの端で改行します。

    この状態ではテキストのはみ出しが生じなくなるので、overflow-xが効きません。

    対処方法として、テキストの改行禁止を指定するwhite-space:  nowrap;をテキスト要素に指定しましょう。

    overflow-xが効かない問題を解消できます。

    まとめ

    overflowを使用すれば、親要素から子要素がはみ出した場合でも適切に処理ができます。

    しかしoverflowを指定してもうまく効かないと悩むケースがあるかもしれません。

    またoverflowが効かないときの対処法についても詳しく解説しておりますので、この記事で原因を探りながら対応してみてくださいね。

    ZeroPlus Gateについて

    プログラミング学習でこのような経験はありませんか?

    1. 目標に向けて何を学べば良いかわからない
    2. 調べても解決策が見つからない
    3. 現場レベルのスキルが身につくのか不安

    これらの悩みは、学習環境を整えることで全て解決することができます。

    ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

    1. なんでも相談できる専属メンター
    2. いつでも技術相談ができるプロ講師
    3. 元IT企業CTO監修のカリキュラム

    条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
    ただし、無料サービスの提供には参加者の数に制限があります。

    少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

    今すぐZeroPlus Gateの詳細を見る

    \ 学んだことをSNSでシェアしよう /

    おすすめのタグ

    この記事の執筆者

    ZeroPlus Media変種部

    ZeroPlus Media編集部

    ZeroPlusは、「フリーランス特化型プログラミングスクール」です。ZeroPlus Mediaでは、フリーランスとして活躍する際に役立つ有益なプログラミングやWeb制作に関する情報を発信しています。

    質問について

    ZeroPlus Media読者限定で質問対応をおこなっています。以下の2つの方法で質問を受け付けています。

    選べる2つの質問方法

    1

    Google Foam(テキスト)で質問

    mail

    フォーム送信

    メールで解答

    formで質問
    2

    Google meet(オンラインmtg)で質問

    meet

    日時選択

    メールを受け取る

    メールからmtgに参加

    meetで質問
    ZeroPlus Gateについて

    あなたの目的に合わせた2つのサービス

    あなたの目的に合わせたZeroPlusの2つのサービス
    基礎からフリーランスレベルまで本質的な学びを提供しています

    完全無料!30日間で学びきれる
    プログラミンスクールZeroPlus Gate

    • お金をかけずに、学習を進めたい
    • Webサイトを作れるようになりたい
    • メンターや講師に質問しながら学習したい

    詳しくはこちらから

    フリーランス特化型
    プログラミングスクール ZeroPlus

    • プログラミング学習で悩んでいる
    • 仲間と一緒に学習したい
    • フリーランスとしての総合的な力を養いたい

    詳しくはこちらから