Lesson3-1:ボックス配置の基礎を理解しよう
Lesson3-2:ボックスサイズを変更しよう
Lesson3-3:ボックスを自在に配置しよう
Lesson3-4:画像を自在に配置しよう
Lesson3-5:画像のスタイルを変更しよう
Lesson3-6:背景画像を設定しよう
Lesson3-7:リンクボタンを設置しよう
Lesson3-8:リストとテーブルのスタイルを変更しよう
Lesson3-9:CSS変数を理解しよう
Lesson3-☆1:コピペして使える!カードレイアウト集
Lesson3-☆2:見た目が良くて使いやすいHTML+CSSテンプレート6選
Lesson3-☆3:CSSのリセット&ノーマライズとは? ◁今回はココ
Webサイトを作成する際、「同じHTMLやCSSを記述しているのに、ブラウザごとに見た目が異なる」 という経験をしたことはありませんか?
例えばGoogle Chromeでは適切に表示されていたボタンのデザインが、FirefoxやSafariで確認すると余白がずれていたり、フォントサイズが微妙に異なっていたりすることがあります。
このような違いが生じる理由は、各ブラウザがデフォルトで持っている「スタイルシート(User-Agent Stylesheet)」が異なるからです。
ブラウザは開発者がCSSを指定しなくても、見出し・段落・リストなどのHTML要素に独自のデザインを適用します。しかしこのデフォルトスタイルの違いが、開発者にとって意図しないレイアウト崩れを引き起こす原因になるのです。
こうした問題を解決し、どのブラウザでも統一されたデザインを実現するために用いられるのが、「CSSリセット」 や 「ノーマライズCSS」 です。
これらの手法を使うことでブラウザごとのスタイルの違いを抑え、より一貫性のあるデザインを構築することができます。
本記事では、CSSリセットとノーマライズCSSの違いを解説し、それぞれの特徴や使い方、どのような場合にどちらを選べばよいのかについて詳しく紹介します。
初心者の方でも理解しやすいように、実際のコード例を交えながら解説するので、ぜひ最後まで読んでみてください!
本記事では以下の4つの内容について紹介します。
- ブラウザごとのデフォルトスタイルの違い
- CSSリセットとは
- ノーマライズCSSとは
- どちらを使用するべきか
ブラウザごとのデフォルトスタイルの違い
Webサイトを作成する際には、ブラウザごとのデフォルトスタイルの違いを理解することがとても重要です。
同じHTMLとCSSを記述しても、ブラウザによって表示が微妙に異なることがあります。
これは各ブラウザが持っている「デフォルトスタイルシート(User-Agent Stylesheet)」が影響しているためです。
ブラウザのデフォルトスタイルとは
ブラウザは開発者が何もCSSを指定しなくても、各HTML要素に対して既定のスタイルを適用します。
例えば見出し(h1〜h6)、段落(p)、リスト(ul, ol)、ボタン(button)などには、あらかじめブラウザ側でデザインが施されています。
このデフォルトスタイルはブラウザごとに異なるため、意図しないレイアウト崩れの原因となることがあります。
具体的なデフォルトスタイルの違い
以下に、代表的なデフォルトスタイルの違いをいくつか紹介します。
見出し(h1タグ)のフォントサイズやマージン
- Google Chrome: フォントサイズ 32px、上下マージン 44px
- Firefox: フォントサイズ 32px、上下マージン 92px
- Edge: フォントサイズ 32px、上下マージン 44px
- ブラウザによって余白が微妙に異なるため、統一しないとデザインが崩れる可能性がある
リスト(ul, ol)のスタイル
- ChromeとEdgeではデフォルトで左側にマージンが設定されている
- Firefoxではパディングで余白を調整している
- Safariではリストのマーカー(黒丸・番号)の位置が微妙に異なる
ボタン(button)のデフォルトスタイル
- Chromeでは、ボタンにデフォルトでグレーの背景色とボーダーが適用される
- Firefoxでは、背景色はやや薄めで、ボーダーが異なる
- Safariでは、角丸(border-radius)が適用されることがある
- 何も指定しないと、ボタンのデザインがブラウザごとに異なって見える
デフォルトスタイルの違いを確認する方法
ブラウザごとのデフォルトスタイルの違いを確認するには、開発者ツール(DevTools)を使用するのが便利です。
以下の手順で自分の使用しているブラウザのデフォルトスタイルをチェックできます。
Google Chrome の場合
- キーボードの F12キー または Ctrl + Shift + I(Windows) / Cmd + Opt + I(Mac) を押して開発者ツールを起動
- 「要素(Elements)」タブを開き、HTMLの各要素を選択
- 「Styles」パネルで、「User-Agent Stylesheet」と表示されている部分がデフォルトスタイル
Firefox や Edge の場合
- 開発者ツールの使い方はChromeとほぼ同じ
- F12キーを押してツールを開き、「スタイル(Styles)」タブで確認
Safari の場合
- Safariの「開発」メニューを有効にする必要がある
- 環境設定 → 詳細 → 「メニューバーに”開発”メニューを表示」にチェックを入れる
- 開発メニューから「要素を検証」を選択し、デフォルトスタイルを確認
ここまででブラウザごとのデフォルトスタイルの違いについて学びました。
同じHTMLやCSSを記述しても、ブラウザによって表示が異なる理由は、各ブラウザが独自に持つ「デフォルトスタイルシート」が原因であることが分かりました。
では、こうしたスタイルの違いをどのように統一すればよいのでしょうか?
次のセクションでは、この問題を解決するための2つの主要な方法である 「CSSリセット」 と 「ノーマライズCSS」 について詳しく解説していきます。
CSSリセットとは
ブラウザごとのデフォルトスタイルの違いを統一する方法のひとつに、「CSSリセット」があります。
CSSリセットとは、各ブラウザが持つデフォルトスタイルを完全に削除し、すべての要素のスタイルを一から設定できるようにする手法です。
CSSリセットを適用すると、h1やpタグの余白、リストのマーカー、ボタンのデザインなど、すべてのデフォルトスタイルが消去され、開発者がゼロからデザインを適用しやすくなります。
CSSリセットのメリットとデメリット
CSSリセットを導入すると、次のようなメリットとデメリットがあります。
メリット
- ブラウザ間のデザインのズレをなくせる
→ すべてのブラウザで統一されたデザインを適用しやすくなる - 開発者が自由にデザインを作成できる
→ デフォルトのスタイルに邪魔されず、すべての要素をカスタマイズできる - 意図しないスタイルの適用を防げる
→ ブラウザごとのマージンやパディングの違いを気にする必要がなくなる
デメリット
- すべてのデフォルトスタイルが消えるため、最低限のスタイルを再設定する必要がある
→ 例えば、リストのスタイル(箇条書きのマーカー)なども消えてしまうため、意図的に再設定しなければならない - すべての要素のスタイルをリセットするため、必要なデザインまで消えてしまうことがある
→ 例えば、フォームのボタンや見出しなど、一般的に使われるデザインが削除されるため、手動で設定し直す必要がある
代表的なCSSリセットの方法
CSSリセットには、いくつかの代表的な手法があります。
ここでは、よく使われる2つの方法を紹介します。
1. Eric Meyer’s Reset CSS
Webデザイナー Eric Meyer が開発した、最も有名なCSSリセット です。
基本的なHTML要素のデフォルトスタイルを完全に削除し、すべての要素のスタイルを均一にすることを目的としています。
コード例(Eric Meyer’s Reset CSS)は以下の通りです。
/* Eric Meyer’s Reset CSS */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; }
このコードを適用するとすべてのHTML要素のマージン・パディング・ボーダー・フォントサイズなどがリセットされます。
2. Yahoo! Reset CSS
Yahoo! が提案したリセットCSSで、最低限のリセットに留めつつ、使いやすさを重視したスタイルになっています。
Eric Meyer’s Reset CSS よりも影響範囲が少なく、既存のデザインを維持しやすいのが特徴です。
コード例(Yahoo! Reset CSS)は以下の通りです。
/* Yahoo! Reset CSS */ body { margin: 0; padding: 0; font-size: 100%; line-height: 1; } ol, ul { list-style: none; }
このコードでは、基本的なリセットをしつつ、リストのマーカーも削除することで、シンプルなデザインのベースを作りやすくしています。
CSSリセットを使うべきケース
CSSリセットは、次のようなケースで有効です。
完全に独自のデザインを適用したい場合
- 企業サイトやWebアプリケーションなど、一からデザインを構築するプロジェクトに適している
- 既存のブラウザスタイルを一切使わず、オリジナルのスタイルを作成したい場合
ブラウザごとのズレを完全になくしたい場合
- 複数のブラウザで同じデザインを維持したいときに便利
- 特にレイアウトの微妙なズレが気になるプロジェクトでは、CSSリセットが効果的
- CSSフレームワークを使う前に、ブラウザのスタイルを統一したい場合にも役立つ
まとめ
CSSリセットはすべてのブラウザで一貫したデザインを適用するための有効な手段です。
特にWebサイトを完全に独自のデザインにしたい場合や、ブラウザごとのレイアウトのズレをなくしたい場合に役立ちます。
ただし、すべてのデフォルトスタイルが削除されるため、最低限のスタイルを手動で追加する手間が発生することに注意が必要です。
次の章では、CSSリセットとは異なるアプローチを取る「ノーマライズCSS」について解説します。
リセットとは違い、ブラウザごとのスタイルを統一しながら、最適なデフォルトスタイルを活かす手法となります。
どちらの方法が適しているのか、比較しながら学んでいきましょう。
ノーマライズCSSとは
CSSリセットはブラウザのデフォルトスタイルを完全に削除する方法でしたが、それとは異なるアプローチとして「ノーマライズCSS(Normalize.css)」という方法があります。
ノーマライズCSSはデフォルトスタイルを完全に消すのではなく、ブラウザごとのスタイルの違いを調整し、できるだけ統一した状態に整えることを目的としています。
例えば見出しタグやボタンのデザインなど、一般的に使われるスタイルを保持しながら、不要な違いを解消するという考え方です。
ノーマライズCSSの特徴
ノーマライズCSSには次のような特徴があります。
- ブラウザごとのデフォルトスタイルを調整し、統一感を持たせる
- ブラウザによって異なるマージンやパディングを適切に調整する
- 例えばh1タグの余白や、リストのマーカーの位置などを統一する
- 必要なデフォルトスタイルは維持する
- CSSリセットとは異なり、すべての要素のスタイルをゼロにするわけではない
- 例えばボタンのスタイルやフォーム要素のデザインなど、一般的に必要なスタイルは残す
- アクセシビリティの向上
- 画面リーダー(スクリーンリーダー)を考慮したスタイルの調整が含まれている
- 例えばフォーム要素のフォーカススタイルなどを改善する
ノーマライズCSSのメリットとデメリット
メリット
- ブラウザごとのズレを最小限に抑えつつ、必要なスタイルを保持できる
- リセットしすぎないため、デフォルトの便利なスタイルを活かせる
- アクセシビリティや一貫性のあるデザインを実現しやすい
デメリット
- 完全にゼロからデザインを作りたい場合には向かない
- 適用範囲が広いため、一部のスタイルを手動で調整する必要があることがある
ノーマライズCSSのサンプルコード
ノーマライズCSSはオープンソースとして提供されており、公式のCDNやファイルを利用することができます。
公式のCDNは以下の通りです。
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css">
このコードをHTMLの<head>内に追加すると、ノーマライズCSSが適用されます。
ノーマライズCSSの一部(例)は以下の通りです。
/* Normalize.css の一部抜粋 */ html { line-height: 1.15; -webkit-text-size-adjust: 100%; } body { margin: 0; } h1 { font-size: 2em; margin: 0.67em 0; } button { background-color: transparent; border: 1px solid; cursor: pointer; }
このように各要素のスタイルを適度に統一しながら、デフォルトの便利なデザインを活かしています。
ノーマライズCSSを使うべきケース
ノーマライズCSSは次のようなケースで特に有効です。
- デフォルトスタイルを活かしながら、最小限の調整をしたい場合
例えばブログやコーポレートサイトなど、基本的なレイアウトが決まっているプロジェクトに向いている - フォームやボタンなどの要素のデザインを維持したい場合
すべてのスタイルをリセットすると、ボタンのクリック感やフォームの視認性が損なわれることがあるが、ノーマライズCSSならそれを防げる - アクセシビリティを考慮したサイトを作成する場合
画面リーダーなどを意識した設計が施されているため、より多くのユーザーにとって使いやすいサイトを作ることができる
まとめ
ノーマライズCSSは、ブラウザごとのスタイルの違いを適度に統一しながら、必要なデフォルトのデザインを活かせる手法です。
一方ですべてのデザインをリセットしたい場合には向いておらず、用途によってCSSリセットと使い分けることが重要です。
次の章では、CSSリセットとノーマライズCSSのどちらを選ぶべきかについて詳しく解説します。
CSSリセットとノーマライズCSSのどちらを選ぶべきか
CSSリセットとノーマライズCSSは、どちらもブラウザごとのデフォルトスタイルの違いを解消するための手法ですが、その目的や使い方には違いがあります。
ここでは、それぞれの特徴を比較し、どのような場合にどちらを選ぶべきかを解説します。
CSSリセットとノーマライズCSSの違い
まず、それぞれの特徴を簡単に比較してみましょう。
項目 | CSSリセット | ノーマライズCSS |
目的 | ブラウザのデフォルトスタイルを完全にリセット | ブラウザごとのスタイルの違いを調整しながら統一 |
方法 | すべての要素のマージン、パディング、フォントなどを削除 | 不要なスタイルだけを修正し、必要なデフォルトスタイルは維持 |
メリット | 完全にゼロからスタイルを設計できる | ブラウザごとの違いを抑えつつ、デフォルトスタイルを活かせる |
デメリット | すべてのスタイルを再設定する必要がある | 細かい調整が必要になることもある |
主な用途 | フルカスタマイズしたいWebアプリやデザイン重視のサイト | ブログやコーポレートサイトなど、基本のデザインを活かしたい場合 |
このようにCSSリセットはデフォルトスタイルを完全になくすのに対し、ノーマライズCSSはスタイルを適度に統一するという違いがあります。
CSSリセットとノーマライズCSSのどちらを使うべきか
CSSリセットとノーマライズCSSは、用途に応じて適切なものを選ぶことが重要です。
以下にどのような場面でどちらを使うべきかをまとめました。
CSSリセットを使うべきケース
- 完全にゼロからデザインを作成する場合
- 企業サイトやブランドサイト、独自のデザインを重視したWebアプリなど
- すべての要素のスタイルを一から設計したい場合
- CSSフレームワークを使用する場合
BootstrapやTailwind CSSなどのCSSフレームワークを導入する際に、余計なデフォルトスタイルを削除しておきたい場合 - ブラウザのデフォルトスタイルを完全になくしたい場合
例えば、リストのマーカーや見出しの余白なども不要な場合
ノーマライズCSSを使うべきケース
- ブログやコーポレートサイトなど、基本的なスタイルを活かしたい場合
既存のスタイルをできるだけ維持しながら、ブラウザ間の違いを調整したいとき - フォームやボタンなどのデフォルトスタイルを維持したい場合
フォームの要素やボタンのクリック感をそのまま使いたいとき - アクセシビリティを考慮したサイトを作成する場合
スクリーンリーダーなどに対応したデフォルトのデザインを活かしたい場合
両方を組み合わせる方法
CSSリセットとノーマライズCSSのどちらかを選ぶのではなく、両方を適宜組み合わせる方法もあります。
例えば基本的にはノーマライズCSSを使いながら、一部のスタイルだけをリセットすることも可能です。
ノーマライズCSSとCSSリセットの組み合わせの例は以下の通りです。
/* ノーマライズCSSをCDNで読み込む */ @import url("https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css"); /* 追加でリセットしたいスタイル */ * { box-sizing: border-box; margin: 0; padding: 0; } ul { list-style: none; }
このようにすればノーマライズCSSの恩恵を受けつつ、リストのスタイルだけを完全にリセットすることができます。
まとめ
CSSリセットとノーマライズCSSには、それぞれ異なる目的と使い方があります。
- 完全に独自のデザインを作成したい場合はCSSリセット
- デフォルトの便利なスタイルを活かしたい場合はノーマライズCSS
- 場合によっては、両者を組み合わせることも有効
プロジェクトの内容に応じて、適切な方法を選択することが重要です。
まとめ
この記事ではCSSリセットとノーマライズCSSについて学び、それぞれの特徴や導入方法を解説しました。
CSSリセットやノーマライズCSSを適切に使いこなすことで、より安定したデザインを作成できます。
また次のステップとして、レスポンシブデザインやフレックスボックス、CSSグリッドレイアウトなどを学ぶと、より高度なレイアウトを実現できます。
これまでの学習を振り返りながら、ぜひ次のステップへ進んでいきましょう。
ここまで学習を進めてきたことをしっかりと整理し、実際のWeb制作に活かしてください。
初めてのWebサイトを作ろう3-☆3
このサイトの Lesson1-1(HTML学習の入り口) かLesson2-1(CSS学習の入り口)から順番に学習していくことで、HTMLとCSSの基本情報をまとめたあなたのWebサイトを作成できます。
サイトのタイトルは「自分で作る!HTML&CSSの学習サイト」
この「初心者のためのプログラミングテキスト&問題集」で紹介しているHTMLやCSSの情報・知識、覚えるべきタグなど簡潔にまとめ、後から辞書のように使えることを目標としています。
- Webサイト制作に挑戦する人はここをクリック!
-
自分だけのWebサイト制作にはベースとなる基本セットが必要になります。
まだ入手していない人はLesson1-1かLesson2-1のページ下部からダウンロードして下さい。
Lesson3-☆3のまとめノートを追加しよう
下記のHTMLコードは、このLesson3-3で紹介した内容を端的にまとめてブラウザ表示するためのコードです。
これをコピーして「MyWebsite3-3.html」という名前で保存し、「lesson3(学習フォルダ)」の中に保存してください。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Lesson3-☆3</title> <link rel="stylesheet" href="style/styles-lesson3.css"> </head> <body> <header> <h1>Lesson3-☆3:CSSリセットとノーマライズCSSとは?</h1> </header> <div class="container"> <section> <h2>目的・要点</h2> <p>Webサイトを作成する際、同じHTMLやCSSを記述しても<strong>ブラウザによって見た目が異なる</strong>ことがあります。この違いは、各ブラウザが持つデフォルトの「スタイルシート(<em>User-Agent Stylesheet</em>)」が異なるために生じます。</p> <p>本レッスンでは、<strong>ブラウザごとのデフォルトスタイルの違い</strong>を理解し、それを統一するための「<strong>CSSリセット</strong>」と「<strong>ノーマライズCSS</strong>」について学びました。それぞれの特徴や使い方、どのような場合にどちらを選択すべきかを理解することで、より一貫性のあるWebデザインを実現できます。</p> </section> <section> <h2>このレッスンで学習した内容</h2> <h3>ブラウザごとのデフォルトスタイルの違い</h3> <ul> <li>ブラウザにはデフォルトで適用されるCSSがあり、これが要素の見た目を左右する。</li> <li>例:見出し(<code>h1</code>)のフォントサイズやマージン、ボタンのデザイン、リストのマーカー位置など。</li> <li>開発者ツール(DevTools)を使ってデフォルトスタイルを確認できる。</li> </ul> <h3>CSSリセットとは</h3> <ul> <li>各ブラウザのデフォルトスタイルを完全に削除し、すべての要素を一からデザインできるようにする手法。</li> <li><strong>代表的なリセットCSS:</strong></li> <ul> <li>Eric Meyer’s Reset CSS</li> <li>Yahoo! Reset CSS</li> </ul> <li><strong>メリット:</strong></li> <ul> <li>ブラウザごとのデザインのズレをなくせる。</li> <li>開発者が自由にスタイルを適用できる。</li> </ul> <li><strong>デメリット:</strong></li> <ul> <li>すべてのデフォルトスタイルが削除されるため、再設定が必要。</li> </ul> </ul> <h3>ノーマライズCSSとは</h3> <ul> <li>ブラウザごとのスタイルの違いを統一しつつ、基本的なデフォルトスタイルを活かす手法。</li> <li><code>Normalize.css</code> を使用すると、各ブラウザのマージンやフォントサイズを適切に調整できる。</li> <li><strong>メリット:</strong></li> <ul> <li>必要なデフォルトスタイルを保持しながら、ブラウザ間の違いを軽減できる。</li> <li>フォーム要素のデザインやアクセシビリティを向上させる。</li> </ul> <li><strong>デメリット:</strong></li> <ul> <li>すべてのスタイルをゼロからカスタマイズしたい場合には不向き。</li> </ul> </ul> <h3>CSSリセットとノーマライズCSSのどちらを使うべきか</h3> <ul> <li><strong>CSSリセットが適しているケース:</strong></li> <ul> <li>完全に独自のデザインを適用したい場合。</li> <li>CSSフレームワーク(Bootstrap、Tailwind CSS など)を使う場合。</li> <li>ブラウザのデフォルトスタイルを完全に排除したい場合。</li> </ul> <li><strong>ノーマライズCSSが適しているケース:</strong></li> <ul> <li>ブログやコーポレートサイトなど、既存のスタイルを活かしたい場合。</li> <li>フォームやボタンのデフォルトデザインを維持したい場合。</li> <li>アクセシビリティを考慮したサイトを作成する場合。</li> </ul> <li><strong>組み合わせる方法:</strong></li> <ul> <li><code>Normalize.css</code> を使いながら、一部のスタイルのみリセットすることで、バランスの取れたデザインが可能。</li> </ul> </ul> </section> <section> <h2>トピック・豆知識</h2> <ul> <li><strong>ブラウザの開発者ツールの活用:</strong>Chrome、Firefox、Edge、Safari の DevTools でデフォルトスタイルを確認。</li> <li><code>User-Agent Stylesheet</code> をチェックし、ブラウザごとの違いを把握。</li> <li><strong><code>box-sizing: border-box;</code> の設定:</strong> <code>* { box-sizing: border-box; }</code> を適用すると、要素の幅と高さの計算が直感的になり、レイアウトのズレを防ぎやすくなる。</li> <li><strong>リストのデフォルトスタイルを削除する場合:</strong> <code>ul { list-style: none; }</code> を設定すると、リストマーカーが消える。</li> </ul> </section> <section> <h2>まとめ</h2> <p>このレッスンでは、<strong>CSSリセットとノーマライズCSSの違い</strong>を学び、それぞれの適用方法について理解しました。</p> <ul> <li><strong>完全に独自のデザインを作りたい場合</strong> → <code>CSSリセット</code></li> <li><strong>デフォルトのスタイルを活かしながら統一性を持たせたい場合</strong> → <code>ノーマライズCSS</code></li> <li>プロジェクトに応じて適切な手法を選択することが重要。</li> </ul> <p>CSSリセットやノーマライズCSSを活用することで、より安定したデザインを作成できるようになります。</p> </section> <p><a href="../MyWebsite.html">トップページへ戻る</a></p> </div> <footer> <p>© 初心者のためのプログラミングテキスト&問題集</p> </footer> </body> </html>
これでLesson3-☆3の作業は完了です。
継続は力なり。次のLessonも、引き続き頑張ってください^^
この記事への質問・コメント
この記事を作成するにあたりAIの力を借りています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。