CSSで要素を非表示にする方法!display:noneの使い方と注意点
生徒
「先生、CSSで特定の要素を画面に表示させたくない時はどうすればいいですか?」
先生
「その場合は、displayプロパティのnoneを使うと簡単に非表示にできます。」
生徒
「display:noneって聞いたことがあります。でも、どんな影響がありますか?」
先生
「display:noneは、その要素を完全に消すので、画面上だけでなくHTML上のスペースもなくなります。注意点を含めて詳しく見ていきましょう。」
1. display:noneで要素を非表示にする方法
CSSの「display:none」は、指定したHTML要素をブラウザの画面上から完全に取り除く設定です。単に見えなくなるだけでなく、その要素が占めていたスペースも詰められるため、まるで最初からその場所に何もなかったかのようなレイアウトになります。
プログラミング未経験の方でも直感的に使いやすく、例えば「特定のボタンを押した時だけメニューを出す」といった動的なWebサイトを作る際によく活用されます。まずは、基本となる書き方を確認してみましょう。特定のクラスに対して display: none; を指定するだけで、その要素を消し去ることができます。
<style>
/* 通常の表示 */
.visible-box {
background-color: #e0f7fa;
padding: 15px;
border: 2px solid #00acc1;
margin-bottom: 10px;
}
/* display:none を適用した非表示の要素 */
.hidden-box {
display: none;
background-color: #ffebee;
padding: 15px;
border: 2px solid #e53935;
}
</style>
<div class="visible-box">
<i class="bi bi-info-circle"></i> このボックスは表示されています。
</div>
<div class="hidden-box">
<i class="bi bi-exclamation-triangle"></i> このボックスは display:none が設定されているため、表示されません。
</div>
<p>
<i class="bi bi-arrow-up"></i> 上記の2つのボックスの間に本来はあるはずの赤いボックスが、跡形もなく消えているのがわかります。
</p>
ブラウザ表示
上記のコード例では、2つのdivタグを記述していますが、画面には青いボックスしか表示されていません。display:noneを指定した赤いボックス(hidden-box)は、高さや幅の情報も無視され、後続のテキストが上に詰められています。
このプロパティは、レスポンシブデザイン(スマホとパソコンで表示を切り替える手法)でも頻繁に使用されます。例えば「スマホではこの画像を出さない」といった制御が、CSS1行で簡単に行えるのが大きなメリットです。
2. display:noneとvisibility:hiddenの違い
要素を隠す方法は「display:none」だけではありません。「visibility:hidden」という設定もよく使われますが、この2つには「レイアウト上のスペースが残るかどうか」という決定的な違いがあります。
初心者の方向けに一言で説明すると、display:noneは「存在そのものを消去する」のに対し、visibility:hiddenは「透明人間にしてその場に立たせておく」というイメージです。この違いを理解していないと、要素を消した拍子に周囲のレイアウトがガタガタに崩れてしまう原因になります。
以下のサンプルコードで、それぞれの消え方の違いを比較してみましょう。青いボックスは完全に消えますが、赤いボックスは「見えないけれど、そこにある」状態になります。
<style>
.box-container {
border: 1px solid #ccc;
padding: 10px;
}
.box {
width: 100px;
height: 50px;
color: white;
text-align: center;
line-height: 50px;
margin-bottom: 5px;
}
/* display:none はスペースごと消える */
.hidden-display {
display: none;
background-color: #007bff;
}
/* visibility:hidden はスペースが残る */
.hidden-visibility {
visibility: hidden;
background-color: #dc3545;
}
.normal-box {
background-color: #28a745;
}
</style>
<div class="box-container">
<p>1. 下の青いボックスは display:none で消えています。</p>
<div class="box hidden-display">display:none</div>
<div class="box normal-box">次は赤いボックス</div>
<p>2. 下の赤いボックスは visibility:hidden で見えませんが、隙間があります。</p>
<div class="box hidden-visibility">visibility:hidden</div>
<div class="box normal-box">一番下の要素</div>
</div>
ブラウザ表示
使い分けのポイントは非常にシンプルです。メニューの開閉などのように、消した時に後ろの要素を詰めたい場合は「display:none」を選びます。一方で、要素は見せたくないけれど、レイアウトの位置関係を絶対に変えたくない(ガタつかせたくない)という特殊なケースでは「visibility:hidden」を活用しましょう。
3. display:noneを使う際の注意点
display:noneは非常に便利なプロパティですが、使い方を誤るとWebサイトの使い勝手やGoogleからの評価に影響を与えることがあります。プログラミング初心者の方が特に気をつけたいポイントを4つにまとめました。
- 操作ができなくなる: 要素が画面から消えるため、その場所にあるはずのボタンをクリックしたり、中のテキストをコピーしたりすることは一切できなくなります。
- SEO(検索エンジン対策)への影響: Googleなどの検索エンジンは非表示コンテンツも認識しますが、ユーザーに見せない隠しテキストとして悪用すると、ペナルティを受けるリスクがあります。ただし、タブ切り替えなど「ユーザーの利便性」のためであれば問題ありません。
- 再表示には設定が必要: 一度消した要素をJavaScriptなどで再び見せたい場合、元の「display: block」や「display: flex」などを正しく指定し直す必要があります。
- アニメーションが効かない: display:noneは「パッと消える」設定です。ふわっと消えるようなアニメーションを作りたい場合は、opacity(透明度)など別の設定を使うのが一般的です。
例えば、初心者がやりがちなミスとして「ボタンを消したつもりが、レイアウトが崩れてしまった」というケースがあります。以下のサンプルで、注意点を確認してみましょう。
<style>
.notice-box {
background-color: #fff3cd;
padding: 15px;
border-left: 5px solid #ffc107;
margin-bottom: 20px;
}
/* このクラスを付けると完全に消える */
.is-hidden {
display: none;
}
.main-text {
font-size: 16px;
color: #333;
}
</style>
<div class="notice-box is-hidden">
<i class="bi bi-info-circle"></i> このメッセージは display:none なので、検索エンジンには読まれても、ユーザーの目には入りません。
</div>
<div class="main-text">
<p>上のボックスは display:none が設定されているため、存在しないものとして扱われ、この文章が一番上に詰められて表示されています。</p>
<p>もし、SEOのために重要なキーワードを hidden(非表示)の中に詰め込みすぎると、不自然なサイトと判断される可能性があるため注意しましょう。</p>
</div>
ブラウザ表示
非表示の仕組みを正しく理解することは、単に見栄えを整えるだけでなく、検索エンジンに正しく情報を伝え、ユーザーにとって使いやすいサイトを作るための第一歩です。モーダルウィンドウやスマホ用メニューの作成など、実戦でもこの注意点を意識して活用してください。
4. display:noneの実践例:ボタンで切り替える
例えば、ボタンをクリックしてテキストを非表示・表示する場合、JavaScriptと組み合わせてdisplay:noneを切り替えることが多いです。こうすることで、ページの見た目を整えつつ、必要に応じて要素を表示できます。
<style>
.toggle-box {
display: none;
background-color: #f0e68c;
width: 200px;
height: 50px;
text-align: center;
line-height: 50px;
margin-bottom: 10px;
}
</style>
<button id="toggleBtn">表示・非表示切替</button>
<div class="toggle-box" id="toggleBox">切替対象のボックス</div>
<script>
const btn = document.getElementById("toggleBtn");
const box = document.getElementById("toggleBox");
btn.addEventListener("click", function() {
if(box.style.display === "none") {
box.style.display = "block";
} else {
box.style.display = "none";
}
});
</script>
ブラウザ表示
この方法を覚えておくと、動的に要素を表示・非表示できるので、ユーザーインターフェースを工夫する幅が広がります。
5. レスポンシブデザインでのdisplay:none活用術
最近のWebサイト制作において、display:noneが最も活躍するのが「レスポンシブデザイン」です。これは、パソコンとスマートフォンで表示する内容を切り替える手法です。
例えば、「パソコンでは横に長い大きな画像を見せたいけれど、画面の小さなスマホでは文字が潰れてしまうので非表示にしたい」といった場合に非常に便利です。特定の画面サイズ(ブレイクポイント)になった時だけdisplay:noneを適用することで、ユーザーにストレスを与えない最適なレイアウトを提供できます。
<style>
/* パソコンで見える大きな画像(スマホでは隠す) */
.pc-only-banner {
background-color: #e3f2fd;
padding: 20px;
border: 2px solid #2196f3;
text-align: center;
}
/* 画面幅が600px以下(スマホ想定)の場合の設定 */
@media (max-width: 600px) {
.pc-only-banner {
display: none;
}
}
</style>
<div class="pc-only-banner">
<i class="bi bi-laptop"></i> PCで見るとこの大きなバナーが表示されます。
</div>
<p>ブラウザの幅を狭めていくと、上記の青いバナーが消えるのがわかります。これがレスポンシブデザインの基本です。</p>
ブラウザ表示
ただし、あまりに多くの要素をdisplay:noneで隠すと、ページの読み込み速度に影響が出る場合があります。本当に隠すべきかどうか、ユーザーの利便性を考えて使い分けましょう。
6. display:noneとアクセシビリティ(読み上げ機能)
Webサイトを作る上で忘れてはならないのが、視覚障害を持つ方が利用する「スクリーンリーダー(音声読み上げソフト)」への対応です。これをアクセシビリティと呼びます。
重要なポイントとして、display:noneを指定した要素は、スクリーンリーダーでも読み上げられないという性質があります。つまり、画面から消えるだけでなく、音声ブラウザを利用しているユーザーにとっても「存在しないもの」として扱われます。
もし、「画面上には出したくないけれど、音声では情報を伝えたい(例:アイコンボタンの意味など)」という場合は、display:noneではなく、要素を画面の外に飛ばすCSSテクニックなどを使う必要があります。用途に合わせて、正しく使い分けることがプロへの第一歩です。
7. display:noneを使いこなそう
今回学習した「display:none」は、要素を完全に消去してレイアウトを詰める、非常に強力なプロパティです。visibility:hiddenとの違いや、JavaScriptとの連携、レスポンシブ対応など、活用できる場面は多岐にわたります。
今回のポイント
- display:noneは要素もスペースも完全に消し去る
- レイアウトを残したい時はvisibility:hiddenを使う
- スマホ対応や動的なギミック(メニュー開閉など)に必須の技術
- SEOやアクセシビリティへの影響を理解して正しく使う
これらの基本をしっかり押さえておくことで、初心者から一歩抜け出した、より高度で使い勝手の良いWebサイト制作ができるようになります。まずは簡単なボタンの切り替えから練習を始めてみてくださいね。
【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー
「魅せる力」をコードで実現。CSS3でモダンWebデザインのプロトタイピングを。
本講座では、単に色を変えるだけではなく、「ユーザーを迷わせないUIデザイン」と「崩れないレイアウト設計」の本質を学びます。最新のCSS3とモダンなレイアウト手法を通じて、プロの現場で通用する「美しさと機能性を両立した実装力」を最短距離で習得します。
具体的なワークショップ内容と環境
【つくるもの】
HTMLで作成した骨組みに対し、商用サイトでも採用される「スタイリッシュなカード型UI」や「レスポンシブなナビゲーション」を構築します。色の選定基準や余白(ホワイトスペース)の黄金比など、デザインの理論をコードに落とし込む工程を体験してください。
【開発環境】
フロントエンド開発の標準であるVisual Studio Code (VS Code)を継続使用。CSSの記述を効率化するプラグインや、ブラウザのデベロッパーツール(検証機能)を駆使して、リアルタイムでデザインを微調整するプロのワークフローを再現します。
この60分で得られる3つの技術資産
要素の横並びや中央揃えを自由自在に操り、どんなデバイスでも崩れないレスポンシブな配置術を完全理解します。
後から修正しやすい「壊れにくいコード」の書き方を伝授。プロの現場で必須となる命名規則の考え方を学びます。
画像の最適化や軽量な装飾技法など、ページの表示速度を落とさずに高級感のある演出を行うテクニックを習得します。
※本講座は、HTMLの基礎を終えた後のステップアップ講座です。Webデザイナー、UIデザイナー、フロントエンドエンジニアへの道を切り開く「魅せる技術」を、モクモク独自のパーソナル指導で着実に定着させます。
リラックスしながら、学ぶことが大切です。しっかりと基礎を理解しましょう!
各回少人数・マンツーマン形式で徹底サポート
このセミナーの詳細・お申し込みはこちら