【CSS】リセットCSSを表示面/コード面から比較してみる

リセットCSSの比較をしてみました。

  • Eric Meyer’s “Reset CSS” 2.0
  • Normalize.css
  • ress.css
  • sanitize.css
  • オレオレCSS

検証環境

比較方法

  1. 検証用HTMLを使う
  2. リセットCSSの内容を見る(GitHubにあればその内容)

検証用HTMLはこれ

gist.github.com

リセットCSSなし

リセットCSSがない=ブラウザのデフォルトスタイルの状態です。以下のスクリーンショットmacOSChromeです。

イメージ:reset.cssなしの状態

  • 周りに余白が付いている
  • 見出しなどの上下にも余白あり
  • form系のフォントサイズは小さめ(Chromeだけかもしれない?)

Eric Meyer’s “Reset CSS” 2.0

CSS Tools: Reset CSS

イメージ:reset.cssあり

Eric Meyer’s “Reset CSS” 2.0 は、

  • すべての余白が消える
  • 見出し(h1〜h6)のウエイト(太さ)がなくなりすべてのフォントサイズが同じになる
  • フォームのスタイルはブラウザによる

見出しと本文の違いがなくなりました。
内容を見ても、input要素やtextarea要素のスタイルについて記述がないので、フォームにも独自のスタイルをつけるときは別途リセットの記述が必要になります。

Normalize.css

Normalize.css: Make browsers render all elements more consistently.

イメージ:Normalize.cssあり

Normalize.cssの見た目は、

  • 見出しまわりの余白はある
  • 大枠の余白は消える
  • フォーム要素のフォントサイズは統一されるが枠線などは消えない

内容 を見ると、

  • 様々なブラウザに考慮してある
    • 例)-webkit-text-size-adjust のように、iOS系の考慮がされている
    • 例)IEで定義されていないmain要素にdisplay: blockの記述あり

ress.css

GitHub - filipelinhares/ress: A modern CSS reset

イメージ:ress.cssあり

ress.cssは、

フォーム要素、特にselect要素のスタイルをリセットするのがひと手間かかるんですよね。ress.cssはIE11用に以下の記述があります。

select::-ms-expand {
  display: none; /* Internet Explorer 11+ */
}

内容

これの意味は、selectの右側に表示される矢印を消すという意味なんですが、ゴリゴリとselectにもスタイルを当てていくときにこの矢印がなくなってると便利なんですよね。。そこも考慮されていて良いです。

sanitize.css

sanitize.css

イメージ:sanitize.cssあり

sanitize.cssは、

  • 見た目はだいたいがNormalize.cssと同じ
  • 日本語フォントと英語フォントが違う(すこし違和感がある…

内容を見ると、

  • box-sizingプロパティにborder-boxが設定してあるので、ボックスのmarginを考慮せずに幅設定ができる
  • 書体設定が細かく指定してある

オレオレCSS

そういえば自分でカスタマイズしたやつがあったのでこれも入れておこう。

github.com

f:id:damdom:20190422070417p:plain

小さい…

  • Eric Meyer’s “Reset CSS” 2.0 に ress.css のフォーム系のリセットを足したような感じ
  • ラジオボタンチェックボックスも消える(独自スタイルをつけられるようにしたかったので
  • テキストが小さいのは 62.5% を設定してある。(1rem = 10px)16pxの大きさにしたければ1.6remと書く。

62.5%はこういう使い方わざわざしなくてもよくない?という意見もある。今後変わっていくかな。

まとめ

便利なツールを作ってくれた先人に感謝しながらお仕事したいですね。