CSSでスクロールバーを表示・非表示にする方法を紹介!

公開日: 2021.10.25
更新日: 2024.01.03
CSSでスクロールバーの表示・非表示をコントロールする

今回は、CSSでスクロールバーを表示させたり、非表示にする方法を紹介していきます。

子要素の縦横の幅が大きく、親要素を超えてしまう場合に親要素の幅の中に収めたい時にスクロールバーを出現させることができます。

スクロールバーは、見た目や使い勝手の観点から非表示にしておきたい場合があります。

CSSでスクロールバーを非表示にする方法を学習してまた一つレベルアップしましょう。

CSSでスクロールを可能にするプロパティはoverflow

overflowプロパティで指定できる値4つ

HTMLのブロック要素内で、収まりきらない要素の対応を決めるプロパティがoverflowプロパティです。

親要素からはみ出して表示するか、スクロールさせて表示させるかなどを指定することができます。

overflowプロパティは基本的に親要素へ記載します。

overflowプロパティで指定できる値は、

  • visible
  • hidden
  • scroll
  • auto

それぞれの値を指定したときの挙動をコードを確認しながら解説していきます。

overflow:visible

overflow:visibleは、親要素に収まりきれない子要素をはみ出したまま表示させます。

overflowを指定しない場合は、このvisibleが適用されます。

簡単なコード例を紹介します。

HTML
<div class="contents_box">
    <h1>overflowを解説</h1>
    <p>ここではoverflowやスクロールバーの表示・非表示をコントロールする方法を紹介します。スクロールバーは、見えていた方がユーザーが使う際には親切です。しかし、スクロールバーが邪魔になることもあります。表示、非表示をコントロールできれば、また一つレベルを上げることができます。一つずつ確実に理解しておきましょう。</p>
</div>
CSS
.contents_box{
  width: 400px;
  height: 150px;
  background-color: aquamarine;
  overflow: visible;
}
overflow:visibleを適用した時の画像

上記の画像のようにoverflow:visibleを指定すると、子要素は親要素からはみ出したままの表示となります。

overflow:hidden

overflow:hiddenは、親要素からはみ出した子要素のはみ出した部分のみを非表示にします。

親要素の縦横幅からはみ出た部分は見えなくなります。スクロールも不可です。

簡単なコード例を紹介します。

HTML
<div class="contents_box">
    <h1>overflowを解説</h1>
    <p>ここではoverflowやスクロールバーの表示・非表示をコントロールする方法を紹介します。スクロールバーは、見えていた方がユーザーが使う際には親切です。しかし、スクロールバーが邪魔になることもあります。表示、非表示をコントロールできれば、また一つレベルを上げることができます。一つずつ確実に理解しておきましょう。</p>
</div>
CSS
.contents_box{
  width: 400px;
  height: 150px;
  background-color: aquamarine;
  overflow: hidden;
}
overflow:hiddenを指定した時の画像

上記の画像のように、はみ出した部分の子要素は見えなくなりました。スクロールをしてもはみ出した部分を見ることもできません。

overflow:scroll

overflow:scrollは、親要素内に収まりきらない子要素をスクロールして見ることができるようになります。縦も横もはみ出している部分をスクロールできます。

簡単なコードを紹介します。

HTML
<div class="contents_box">
    <h1>overflowを解説</h1>
    <p>ここではoverflowやスクロールバーの表示・非表示をコントロールする方法を紹介します。スクロールバーは、見えていた方がユーザーが使う際には親切です。しかし、スクロールバーが邪魔になることもあります。表示、非表示をコントロールできれば、また一つレベルを上げることができます。一つずつ確実に理解しておきましょう。</p>
</div>
CSS
.contents_box{
  width: 400px;
  height: 150px;
  background-color: aquamarine;
  overflow: scroll;
}
overflowにscrollを指定した時のアニメーション

縦横ともに子要素がはみ出している場合は、右と下にスクロールバーが出現します。上下のみ子要素がはみ出している場合は、右側のスクロールのみが出現します。 

overflow:auto

overflow:autoは、親要素内に子要素が収まる時はvisible、親要素から子要素がはみ出ている時は、scrollが適用されます。

コードの記載例は、

CSS
.contents_box{
  width: 400px;
  height: 150px;
  background-color: aquamarine;
  overflow: auto;
}

上記のコードでは、scrollの際に紹介した画像のような結果となります。

CSSでスクロールバーを表示させるにはoverflow:scroll

CSSでスクロールバーを表示させるにはoverflow:scroll

記事前半でも解説してきましたが、要素にスクロールを出現させるためには、overflow:scrollの記載が必要となります。

どんなに子要素が大きくはみ出ていたとしても、親要素内でスクロールができるようになります。

ただし、overflow:scrollは常にスクロールバーを出現させるため、内容が読みにくくなることもあります。

例えば下記の画像のように、スクロールバーがあることで文字が読みにくくなります。

スクロールバーを表示させた時の画像

ここからは、スクロールバーは消しながらもスクロールができるように設定する方法を解説していきます。

CSSでスクロールバーを非表示にする方法はブラウザで異なる

それぞれのブラウザにてCSSでスクロールバーを非表示にする方法

スクロールはできるけど、スクロールバーを非表示にする方法を紹介します。

スクロールバーはユーザーがその要素がスクロールできることを理解するのに役立ちますが、逆にコンテンツにとっては邪魔になることがあります。

スクロールバーを非表示にして、スクロールを可能にする方法はブラウザによって指定方法が異なるので、それぞれのブラウザでの指定方法を紹介します。

Google Chromeでスクロールバーを非表示にする

GoogleChromeでスクロールバーを非表示にする方法は、擬似要素の::-webkit-scrollbarを使用します。

簡単なコード例を紹介します。

HTML
<div class="contents_box">
    <h1>overflowを解説</h1>
    <p>ここではoverflowやスクロールバーの表示・非表示をコントロールする方法を紹介します。スクロールバーは、見えていた方がユーザーが使う際には親切です。しかし、スクロールバーが邪魔になることもあります。表示、非表示をコントロールできれば、また一つレベルを上げることができます。一つずつ確実に理解しておきましょう。</p>
</div>
CSS
.contents_box{
  width: 400px;
  height: 150px;
  background-color: aquamarine;
  overflow: scroll;
}
.contents_box::-webkit-scrollbar{
  display: none;
}
スクロールバーを非表示にした時の画像

親要素にoverflow:scrollを指定してスクロールを可能にして、::-webkit-scrollbarでdisplay:noneを指定してスクロールバーを非表示にします。

Microsoft Edgeでスクロールバーを非表示にする

Microsoft Edgeでスクロールバーを非表示にする方法は、親要素に-ms-overflow-style: none;を追加するだけです。

HTML
<div class="contents_box">
    <h1>overflowを解説</h1>
    <p>ここではoverflowやスクロールバーの表示・非表示をコントロールする方法を紹介します。スクロールバーは、見えていた方がユーザーが使う際には親切です。しかし、スクロールバーが邪魔になることもあります。表示、非表示をコントロールできれば、また一つレベルを上げることができます。一つずつ確実に理解しておきましょう。</p>
</div>
CSS
.contents_box{
  width: 400px;
  height: 150px;
  background-color: aquamarine;
  overflow: scroll;
 -ms-overflow-style: none;
}

Microsoft Edgeでは-ms-overflow-style: none;の指定が必要となります。

Safariでスクロールバーを非表示にする

Safariでスクロールバーを非表示にするCSSはGoogle Chromeと同様に、::-webkit-scrollbarでdisplay:noneを指定します。

HTML
<div class="contents_box">
    <h1>overflowを解説</h1>
    <p>ここではoverflowやスクロールバーの表示・非表示をコントロールする方法を紹介します。スクロールバーは、見えていた方がユーザーが使う際には親切です。しかし、スクロールバーが邪魔になることもあります。表示、非表示をコントロールできれば、また一つレベルを上げることができます。一つずつ確実に理解しておきましょう。</p>
</div>
CSS
.contents_box{
  width: 400px;
  height: 150px;
  background-color: aquamarine;
  overflow: scroll;
}
.contents_box::-webkit-scrollbar{
  display: none;
}

::-webkit-scrollbarでdisplay:noneを指定するだけで、Google ChromeとSafariに同時に対応できます。現在はApple製品を使う人も多いので、Safariへの対応は必須でしょう。

Firefoxでスクロールバーを非表示にする

Firefoxでスクロールバーを非表示にする方法は、親要素にscrollbar-width: none;を記述します。

HTML
<div class="contents_box">
    <h1>overflowを解説</h1>
    <p>ここではoverflowやスクロールバーの表示・非表示をコントロールする方法を紹介します。スクロールバーは、見えていた方がユーザーが使う際には親切です。しかし、スクロールバーが邪魔になることもあります。表示、非表示をコントロールできれば、また一つレベルを上げることができます。一つずつ確実に理解しておきましょう。</p>
</div>
CSS
.contents_box{
  width: 400px;
  height: 150px;
  background-color: aquamarine;
  overflow: scroll;
  scrollbar-width: none;
}

Internet ExplorerやEdgeの対応と同様に、overflow:scrollで要素がスクロール可能になった後に、scrollbar-width: none;でスクロールバーを非表示にしています。

一括で指定することでどのブラウザでもスクロールバーを非表示にする

ここまではブラウザごとでスクロールバーを非表示にする方法を紹介しましたが、全てのコードをまとめて記述しておく必要があります。Webサイトを見るブラウザを決めるのはユーザーですので、どのブラウザで見てもスクロールバーが非表示の状態にする必要があります。

HTML
<div class="contents_box">
    <h1>overflowを解説</h1>
    <p>ここではoverflowやスクロールバーの表示・非表示をコントロールする方法を紹介します。スクロールバーは、見えていた方がユーザーが使う際には親切です。しかし、スクロールバーが邪魔になることもあります。表示、非表示をコントロールできれば、また一つレベルを上げることができます。一つずつ確実に理解しておきましょう。</p>
</div>
CSS
.contents_box{
  width: 400px;
  height: 150px;
  background-color: aquamarine;
  overflow: scroll;
  /*IE(Internet Explorer)・Microsoft Edgeへの対応*/
  -ms-overflow-style: none;
  /*Firefoxへの対応*/
  scrollbar-width: none;
}

 /*Google Chrome、Safariへの対応*/
.contents_box::-webkit-scrollbar{
  display: none;
}

CSSでスクロールバーを非表示にしたい場合は、上記のコードを記述するとだけ覚えておくと良いでしょう。パソコン上のメモなどにコピペして使うのも一つの方法です。

「なんか今の仕事合わないな・・・」

「IT業界に転職してみたいなぁ・・・」

という方、DMMが運営する「WEBCAMP エンジニア転職」をご検討してみてはいかがですか?

WEBCAMP エンジニア転職

「WEBCAMP エンジニア転職」では最短12週間でITエンジニアを目指すことが可能です!

WEBCAMPの卒業生は転職後に年収もUP!(例:年収250万円→500万円)

しかも今なら受講料の最大70%が給付金として支給されます

DMM WEBCAMPは経済産業省・厚生労働省が認定した専門実践教育訓練給付金制度の対象です

DMM WEBCAMPについてもっと詳しく

縦だけ、横だけスクロールさせるCSSの記述方法を紹介

縦だけ、横だけスクロールさせるCSSの記述方法を紹介

要素をスクロールさせる際に、縦方向にだけスクロールさせたい、横方向だけスクロールさせたい場面があります。

そんな時は、overflowプロパティに2つの値を指定するか、スクロールさせない方向を指定する方法があります。

CSS
overflow:縦方向への指定(x) 横方向への指定(y);

もしくは、

CSS
overflow-x:hidden;
overflow-y:hidden;

上記のコードだけではわかりにくいので、方向に合わせた指定方法を紹介します。

縦だけにスクロールさせたい場合

縦方向だけにスクロールをさせたい場合は、

HTML
<div class="contents_box">
    <h1>overflowを解説</h1>
    <p>ここではoverflowやスクロールバーの表示・非表示をコントロールする方法を紹介します。スクロールバーは、見えていた方がユーザーが使う際には親切です。しかし、スクロールバーが邪魔になることもあります。表示、非表示をコントロールできれば、また一つレベルを上げることができます。一つずつ確実に理解しておきましょう。</p>
</div>
CSS
.contents_box{
  width: 400px;
  height: 150px;
  background-color: aquamarine;
  overflow: hidden scroll ;
}
もしくは、
CSS
.contents_box{
  width: 400px;
  height: 150px;
  background-color: aquamarine;
  overflow-x: hidden;
}
縦方向のみにスクロールさせる画像

横方向へのスクロールをhiddenで非表示にして、縦方向だけscrollの値を指定することで縦方向にだけスクロールをさせることが可能となります。

横だけスクロールさせたい場合

横方向にだけスクロールをさせたい場合は、

HTML
<div class="contents_box">
    <h1>overflowを解説</h1>
    <p>ここではoverflowやスクロールバーの表示・非表示をコントロールする方法を紹介します。スクロールバーは、見えていた方がユーザーが使う際には親切です。しかし、スクロールバーが邪魔になることもあります。表示、非表示をコントロールできれば、また一つレベルを上げることができます。一つずつ確実に理解しておきましょう。</p>
</div>
CSS
.contents_box{
  width: 400px;
  height: 150px;
  background-color: aquamarine;
  overflow: scroll hidden;
}
もしくは、
.contents_box{
  width: 400px;
  height: 150px;
  background-color: aquamarine;
  overflow-y: hidden;
}
横方向のみスクロールさせる画像

上記の画像のように、横方向だけスクロールバーが出現し、横方向のみにスクロールが可能となりました。

縦方向のスクロールを非表示にすることで横方向だけのスクロールが可能です。

xとyの方向を理解しておくことでスムーズに記述ができます。

CSSでスクロールバーを非表示にする方法:まとめ

CSSでスクロールバーを非表示にする方法とoverflowプロパティについて解説してきました。スクロールを管理する上では、overflowプロパティの理解は必須です。overflowプロパティの挙動を理解することで、要素の表現方法の幅が広がります。

スクロールバーを非表示にする際は、ブラウザごとに対応が違うことも理解しておきましょう。全てのユーザーが同一のブラウザを使用するわけではないので、できるだけ主要なブラウザへの対応は心がける必要があります。

ただし、ユーザビリティやアクセシビリティを考慮すると、スクロールバーを完全に非表示にすることは避けるべきです。スクロールバーが非表示の場合、ユーザーはコンテンツがスクロール可能であることを視覚的に認識できなくなり、特にタッチデバイスを使用している場合にはスクロールが難しくなる可能性があります。デザインの要件やコンテキストによっては、スクロールバーのスタイルをカスタマイズする方が適している場合もあります

スクロールバーは、スクロールができることを教える際には役立ちますが、デザインなどを考えた時に邪魔になることもあります。どちらでも対応できるように学習しておきましょう。

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

インタビュー記事一覧 >

関連記事

  • HTMLの学習におすすめの本12選

    【初心者向け】HTMLの学習におすすめの本12選!

    公開日: 2017.08.08
    更新日: 2024.01.29
  • HTMLとExcelを変換する方法

    公開日: 2022.03.11
    更新日: 2024.01.16
  • html要素を非表示にする方法をわかりやすく解説する

    【サンプルコード付き】HTML要素を非表示にする方法を解説

    公開日: 2021.07.31
    更新日: 2024.01.06
  • Pythonのダウンロードから動作確認までの環境構築方法を解説

    Pythonのダウンロードから動作確認までの環境構築方法を解説!

    公開日: 2019.02.08
    更新日: 2024.01.31
  • 資料請求

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

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

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

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

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

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

      資料をダウンロードする

    © 2024 WEBCAMP MEDIA Powered by AFFINGER5