Normalize.cssとReset CSSの違いは何ですか?


565

CSSリセットとは何か知っていますが、最近、Normalize.cssと呼ばれるこの新しいものについて聞きました

Normalize.cssReset CSSの違いは何ですか?

CSSの正規化とCSSのリセットの違いは何ですか?

CSSリセットの新しい流行語ですか?

回答:


800

normalize.cssに取り組んでいます。

主な違いは次のとおりです。

  1. Normalize.cssは、すべてを「スタイル解除」するのではなく、有用なデフォルトを保持します。たとえば、normalize.cssをインクルードした後の「動作する」supなどの要素sub(実際にはより堅牢になります)に対して、reset.cssをインクルードした後の要素は通常のテキストと視覚的に区別できません。したがって、normalize.cssは視覚的な開始点(均質性)を課しません。これは、すべての人の好みではないかもしれません。最善の方法は、両方を試して、好みのゲルを確認することです。

  2. Normalize.cssは、reset.cssの範囲外であるいくつかの一般的なバグを修正します。reset.cssよりもスコープが広く、HTML5要素の表示設定、fontフォーム要素による継承の欠如、font-sizeレンダリングの修正pre、IE9でのSVGオーバーフローbutton、iOSでのスタイル設定のバグなどの一般的な問題のバグ修正も提供します。

  3. Normalize.cssは、開発ツールを散らかしません。reset.cssを使用する際の一般的な問題は、ブラウザーのCSSデバッグツールに表示される大きな継承チェーンです。これは対象となるスタイリングのため、normalize.cssではこのような問題ではありません。

  4. Normalize.cssはよりモジュール化されています。プロジェクトは比較的独立したセクションに分割されているので、Webサイトでセクションが不要になることがわかっている場合は、フォームの正規化などのセクションを簡単に削除できます。

  5. Normalize.cssのドキュメントが改善されました。normalize.cssコードはインラインでドキュメント化され、GitHub Wikiでより包括的にドキュメント化されています。これは、コードの各行が何をしているのか、なぜコードが含まれていたのか、ブラウザ間の違いは何か、そして独自のテストをより簡単に実行できることを意味します。このプロジェクトの目的は、ブラウザがデフォルトで要素をレンダリングする方法について人々を教育し、改善の提出に参加しやすくすることです。

これについては、normalize.cssに関する記事で詳しく説明しています


19
多くの場合、(リセットを使用する場合)それらをゼロのままにしないため、実際には少ないコードを記述しています。いくつかの値をゼロにしたい場合、そのスタイルは意図された要素に結合され、デバッグを容易にします。
necolas

8
そして、それは、すべてをゼロにするとブラウザの速度が低下するなど、多くのリセットで重大な問題になります。
Rob

4
そして、それはリセットの利点でもあります-正規化ミスのサイズ設定の問題は次のようになります:github.com/yahoo/pure/issues/395
Daniel Sokolowski

4
はい、通常、パディングとマージンをゼロにしたくないと思ったときにポイントを逃しますか?いいえ、デフォルトも必要ありませんか?
guioconnor 2015

9
私はまだそれを使用していますが、個人的に私はノーマライズをやめました。ここのポイントの多くは本当に誇張されています(より良いドキュメント...?)。ノーマライズは意見が分かれているので、視覚的な開始点を課します(この回答の内容にかかわらず)。また、古くなる可能性もあります。Reset.cssは、使用後に古くなることはありません。そして、マージンとパディングを考えられる他のどの数値よりも0にしたくなる可能性が高いので、開発中にすべてをリセットすることは実際に役立ちます。正規化はブラウザの問題には適していますが、それが私がそれを使用する主な理由です。
チャックルバット

255

主な違いは次のとおりです。

  • CSSのリセットはすべての組み込みのブラウザースタイルを削除することを目的としています。H1-6、p、strong、emなどの標準要素は、まったく同じように見え、装飾がまったくありません。次に、すべての装飾を自分で追加する必要があります。

  • CSSの正規化は、組み込みブラウザーのスタイル設定をブラウザー間で一貫させることを目的としています。H1-6のような要素は、ブラウザ全体で一貫した方法で太字で大きく表示されます。次に、デザインに必要な装飾の違いのみを追加します。

デザインがa)タイポグラフィなどの一般的な規則に従っている場合、およびb) Normalize.cssがターゲットユーザーに対して機能する場合、CSSリセットの代わりにNormalize.CSSを使用すると、CSSが小さくなり、書き込みが速くなります。


6
@Jitendra Vyas:-本当に1つの方法しかありません。よくコメントされたNormalize.CSSコードを読んで、それがニーズに適しているかどうかを判断してください。github.com/necolas/normalize.css/blob/master/normalize.css
Jesper M

別のメモ:Normalize.cssは、できるだけ目立たないようにすることを目的としています。これにより、開発者は、特定性の競合に対処する必要なく、コードを簡単に記述できます。
zzzzBov

開発中にリセットを使用したいとしましょう。そして、完了したら、私はノーマライズ.cssまたは私が変更していないすべてのものを取り、ブラウザで同じであるいくつかのJSを必要とします。または私は変更し、変更後はブラウザと同じになり、クライアント側から削除しました。したがって、リセットは、より高速なクライアント側でその「プログラム」を開発するときに役立ちます。どちらも幸せ。そして、より賢い生き方。
Muhammad Umer 2013年

実際には、いずれにしても、Normalizeのスタイルをすべて上書きしてしまうことになります。理論は素晴らしいですが、このOOCSSの世界では、実際にはそのようには機能しません。
チャックルバット

40

Normalize.cssは主に一連のスタイルであり、作成者が見栄えをよくするものに基づいており、ブラウザー間で一貫した外観にしています。リセットは基本的に要素からスタイリングを取り除き、すべてのスタイリングをより細かく制御できます。

両方使っています。

一部のスタイルはResetから、一部はNormalize.cssから。たとえば、Normalize.cssからは、すべての入力要素が同じフォントを持っていることを確認するためのスタイルがありますが、これは発生しません(テキスト入力とテキストエリアの間)。リセットにはそのようなスタイルがないため、入力には異なるフォントが使用されますが、これは通常は必要ありません。

したがって、基本的には、2つのCSSファイルを使用すると、すべてをより適切に「均等化」できます;)

よろしく!


1
これは良い、実用的な答えです。それは必ずしもどちらかとは限りません。それぞれからあなたが欲しいものを取る。私は完全なリセットが好きですが、ノーマライザーは上でうまくいくいくつかの素敵な部分を提供します。
2012

3
@ ricmetalster、reset.cssとnormalize.cssの機能を組み合わせるために、独自のCSSを書き直す必要がありましたか?
ayjay

2
両方を使用したい場合は、最初に「リセット」をリストしてから「正規化」してから、スタイルを上に追加できますか?
Craig

私は「考えすぎない」アプローチを採用し、両方を使用して、SASSインポートに含まれているように呼び出します@import '_normalize' && '_reset'
killscreen

6

1つ目reset.cssは、使用できる最悪のライブラリです。これは、HTMLの標準構造を削除し、マージンパディングやその他の属性の値をに割り当てた後、記述したすべてをテキストとして表示するため0です。したがって、たとえば<H1>、と同じであることがわかります<H6>

一方Normalize.css、標準構造を使用し、そこに存在するほとんどすべてのエラーも修正します。たとえば、ブラウザ間でフォームを表示する際の問題を修正します。正規化は、この機能を変更することによってこれを修正し、要素がすべてのブラウザーで同じように表示されるようにします。


1
ユースケースによって異なります。あなたの例を考えると、プロジェクトのすべての見出しタグのフォントスタイルを変更する必要がある場合、実際にはデフォルト値をまったく使用しませんか?自分のプロジェクトで使用法を見つけられないからといって、ライブラリを「最悪」であるとラベル付けしてはなりません。
Debojyoti Ghosh

リセットの主な目的の1つは、ブラウザーに適用されるスタイルから発生する問題に対処することです。これは非常に便利です。また、ライブラリと見なすべきではないと思います。
Isaac Pak 2017年

@gdebojyotiいくつかの使用例がありますが、それぞれのフォントスタイルに関係なく、すべての見出しを同じサイズにすることはほとんどありません。
ジェームズベニンガー2017

5

その説明から、リセットのようにすべてのデフォルトのスタイルを削除するのではなく、ユーザーエージェントのデフォルトのスタイルをすべてのブラウザーで一貫させるように試みているようです。

多くのCSSリセットとは異なり、有用なデフォルトを保持します。


リセットよりも正規化CSSを使用する方が良いですか?
Jitendra Vyas 2011

3
@Jitendra Vyas —いいえ。ツールは異なり、お互いに良くも悪くもありません。あなたが最もよく持っている問題を解決するのに役立つものを選んでください。
Quentin

8
正規化リセットよりも優れていると主張する必要があります。その結果、回線を介して転送されるCSSが少なくなり、UAのデフォルトの使用が改善され、要素がどのよう表示されるかをよりよく理解できます。
ライアンキナル

5

特に複雑な非定型型の設計プロジェクトでは、カスタム設計仕様を満たすためにリセットする必要があるようです。正規化は純粋にWebプログラミングを進めるための良い方法であるかのように聞こえますが、多くの場合、WebサイトはWebプログラミングとUI / UXデザインルールの融合です。


ユースケースの99%はやりすぎです。
Michael

@Michaelどっち?リセットまたは正規化しますか?(ちょうど主題に関する人々の心を理解しようとしている)
ブレン

1
@Brenはリセットと正規化の両方を行います。各要素のデフォルトのCSS値を知ることは、優れたフロントエンド開発者であることの一部です。私はそれらを不必要な力ずくの方法と見ています。
Michael

4
@Michael> Knowing the default CSS values for each element is part of being a good front end developer-これは、プログラミング言語ではなく電子で作業するほうがよいと言っているのと同じです。ツールを効率的に使用すると、誰かが優れた開発者になります。その逆は、通常、時間を浪費する
狂信

1

場合によっては、両方を使用するのが最善の解決策です。どちらも使用しないこともあります。そして時々、それはどちらか一方を使用することです。すべてのブラウザーでマージンとパディングを含むすべてのスタイルをリセットする場合は、reset.cssを使用します。次に、すべての装飾とスタイリングを自分で適用します。組み込みのスタイリングが好きなだけで、ブラウザ間の同期性、つまり正規化が必要な場合は、normalize.cssを使用します。ただし、reset.cssとnormalize.cssの両方を使用する場合は、最初にreset.cssスタイルシートをリンクし、次に(すぐに)normalize.cssスタイルシートをリンクします。どちらが良いかは常に問題になるとは限りませんが、どちらを使用するか、どちらを使用するか、どちらを使用しないかを判断する必要があります。私見では。


0

この質問にはすでに何度か回答がありました。2019年9月の時点で、それぞれについて簡単に要約し、例と洞察を示します。

  • Normalize.css-名前が示すように、ユーザーエージェントのブラウザーのスタイルを正規化します。つまり、デフォルトでは少し異なるため、すべてのブラウザーでスタイルを同じにします。

:デフォルトでGoogle Chrome <h1>内のタグ<section>は、「予想される」<h1>タグのサイズよりも小さくなります。一方、Microsoft Edgeは、「予想される」サイズの<h1>タグを作成しています。Normalize.cssはそれを一貫させます。

現在の状態:npmリポジトリは、normalize.cssパッケージの現在のダウンロード数が現在週50万回を超えていることを示しています。リポジトリプロジェクトの GitHubスターは36k以上です。

  • CSSをリセット -名前が示すように、すべてのスタイルをリセットします。つまり、すべてのブラウザーのユーザーエージェントスタイルを削除します。

:以下のようになります。

html, body, div, span, ..., audio, video {  
   margin: 0;  
   padding: 0;  
   border: 0;  
   font-size: 100%;  
   font: inherit;  
   vertical-align: baseline; 
}

現在のステータス:Normalize.cssよりもはるかに人気が低く、reset-cssパッケージは、1週間あたり約2万6千のダウンロードであることを示しています。GitHubスターはプロジェクトのリポジトリからわかるように、わずか200 です

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.