リセットCSSとは？

## リセットCSSとは
リセットCSSとは、Google ChromeやSafari、Microsoft Edgeなど異なるブラウザを使っても同じようにWebサイトが表示されるためのCSSファイルのこと

## 仕組み
ブラウザが元々持っているデフォルトのCSSの設定を上書きするように、ブラウザ毎に異なるスタイルを持つ特定のセレクタに対してプロパティを指定してブラウザ間の表示を揃えるという仕組み

## リセットCSSでできること
* ブラウザごとの差異をなくすことができる
* ブラウザ固有のバグを修正することできる
* わざわざ自分でブラウザごとのCSSを書かなくて済む

## リセット読み込み方
~~~html
<head>
 <meta charset="UTF-8">
  <!-- ↓の＃に読み込みたいリセットCSSを先に読み込みます -->
 <link rel ="stylesheet" href="#.css">
  <!-- 次の制作者のCSSファイル名を入れてください -->
 <title>リセットCSSの説明</title>
~~~

CSSの順番は、まずリセットCSSを読み込ませてから、制作者側のCSSで上書きするという流れ。
CDNで読み込ませる事が出来る物もある。



## 主なリセットCSS
* Eric Meyer's "Reset CSS"2.0
* HTML5 Doctor CSS Reset
* Yahoo!(YUI3)Reset CSS
* Universal Selector'*'Reset
* Normalize.CSS
* ress
* sanitize.css
* Destyle.css
* A Modern CSS Reset

### Eric Meyer's "Reset CSS"2.0
<b>公式ページ</b>

https://meyerweb.com/eric/tools/css/reset/

<b>特徴</b>
* 全ての余白が消える（ブラウザの周辺、見出しなどの要素の上下など全て）
* 見出しや太文字などの設定が消え、文字サイズもリセットされ全て同じになる
* テキストボックスや送信ボタンなどの＜input＞要素はブラウザ固有のものになる

`まっさらな状態から、全て自分でデザインしたい方におすすめ。`

:::note info
Eric Meyer's "Reset CSS"2.0は、一部のタグがHTML5に対応していないことがある。
したがって、次に紹介するHTML5 Doctor CSS Resetを使用することをおすすめする。
:::


### HTML5 Doctor CSS Reset
<b>公式ページ</b>

http://html5doctor.com/html-5-reset-stylesheet/

<b>特徴</b>

* 全ての余白が消える（ブラウザの周辺、見出しなどの要素の上下など全て）
* 見出しや太字などの文字サイズはリセットされ全て統一されるが、文字の太さはリセットされない
* テキストボックスや送信ボタンなどの＜input＞要素はブラウザ固有のもになる

`まっさらな状態から、全て自分でデザインを調整したい方におすすめ。`

### Yahoo! (YUI 3) Reset CSS
<b>公式ページ</b>

https://yuilibrary.com/yui/docs/cssreset/

<b>特徴</b>
* ブラウザの周りの余白はリセットされているが、要素の上下の余白は少しだけ空いている
* 見出しや太文字の文字の太さはリセットされていて、見出しの文字サイズはリセットされているが、小文字の文字サイズはリセットされていない
* テキストボックスや送信ボタンなどの＜input＞要素はブラウザ固有のものになる

:::note info 
Yahoo! (YUI 3) Reset CSSは一部のHTML5タグが対応していないことがあるため、`特別な理由がない限り他のリセットCSSを使った方がいい`。
:::

### Universal Selector'*'Reset
<b>リソース</b>
~~~css
*{
margin:0;
padding:0;
}
~~~


<b>特徴</b>
* 全ての余白をリセットしている（’*’はユニバーサルセレクタといい全ての要素を指定するときに使用します）
* 余白以外はリセットしないので、文字の太さや大きさなどはデフォルトのものが反映されます。

:::note info
Universal Selector'*'Resetを使用すると、`Webページの読み込み速度が遅くなるためおすすめしない`。
＜ul＞や＜ol＞などのリストや＜table＞（表）などが持つ余白はあらかじめいい感じに調整されているのにも関わらずリセットしてしまうのも、お勧めできない理由の一つである。
:::

### Normalize.css
<b>公式ページ</b>

https://github.com/necolas/normalize.css/blob/master/normalize.css

<b>特徴</b>
* ブラウザ周りの余白はリセットされる
* 見出しや文字の上下の余白はリセットされず、文字のサイズと太さもリセットされない
* 有用なデフォルトのCSSはリセットしない（リストの余白など）

:::note info
Normalize.cssはデザインに支障が出ないデフォルトのCSSをリセットせずに保持する。
そのため、全てを自分でデザインしなくても、デフォルトの状態でそれなりに整ったデザインをすることが可能なので`非常に使い勝手が良い`です。
:::

### ress
<b>公式ページ</b>

https://github.com/filipelinhares/ress

<b>特徴</b>
* ブラウザ周り、各要素の上下の余白が全てリセットされる・見出しなどの文字サイズと太さはリセットされない
* ＜input＞のテキストボックスやボタンも全てリセットされる


:::note info
ress.cssは`normalize.cssをさらに使いやすくするためにアップデートされたCSS`。
normalize.cssとの大きな変更点は、すべての要素のpaddingとmarginをリセットすること、＜input＞要素の標準スタイルを打ち消すことなどです。
:::

### sanitize.css
<b>公式ページ</b>

https://csstools.github.io/sanitize.css/

<b>特徴</b>
* ブラウザ周りの余白はリセットし、見出しなどの要素の上下の余白はリセットしない
* 文字のサイズと太さはリセットしていない
* 見た目はnormalize.cssと似ている（こちらの方が少し余白の幅が広い）

:::note info
sanitize.cssはnormalize.cssの共同開発者開発したこともあり、normalize.cssの思想を受け継いでいます。
normalize.cssと同じように有用なデフォルトのCSSをそのまま保持し、バグを修正し、ユーザビリティを高められている他に、`スマホなどのモバイルに対応している`こともsanitize.cssの特徴の一つである。
:::

### destyle.css
<b>公式ページ</b>

https://github.com/nicolas-cusan/destyle.css/blob/master/destyle.css

<b>特徴</b>
* ブラウザのデフォルトCSSを無効化する
* marginやpaddingなどを消す
* font-sizeとline-heightをリセットする


`まっさらな状態からデザインしたい方におすすめ`

### A Modern CSS Reset
<b>公式ページ</b>

https://github.com/hankchizljaw/modern-css-reset/blob/master/dist/reset.css

<b>特徴</b>
* デフォルトの状態と比べると＜h＞タグや＜p＞タグに「margin:0」に設定されており、要素同士の間隔が狭くなっている
* imgタグやpictureタグに対して「max-width:100%;」「display:block」が指定されているため、レスポンシブがしやすいといったメリットがある
* ファイルサイズが軽い

`ブラウザのデフォルトCSSを残す`

## 参考サイト

https://webdesign-trends.net/entry/8137

https://fueru.info/design/html-css/css-resetstyle/

https://web-camp.io/magazine/archives/30817