normalize.cssはそのまま使え?

normalize.cssのコミットを購読してる。主にnormalize.scssを追随させるためだけど、勉強になることも多い(多かった)し。この前のコミットでREADMEが更新され、そのまま使うことを推奨すると変更された。特に邪悪な変更というわけではないんだけど、そのまま使いたくないなーみたいなのがちょっとある。

normalize.cssは素晴らしいものだし、そのまま使って何も問題ないものなことは確か。でも、そのまま使うと無駄が多い。例えば以下の様なケース。

body {
  margin: 0;
}

body {
  margin: 1em;
  line-height: 1.6;
  font-family: "Helvetica Neue", "Calibri", sans-serif;
  color: #ddd;
  background-color: #333;
}

normalize.cssのbodyへのルールセットが無意味なルールセットになってしまう。こういった無意味なルールセットができるケース以外でも、単にルールセットをまとめたいこともある。

hr {
    -moz-box-sizing: content-box;
    box-sizing: content-box;
    height: 0;
}

hr {
  margin-right: auto;
  margin-left: auto;
  border: none;
  clear: both;
  width: 16em;
}

hrのルールセットが2つある意味ない。更にそもそもformをまったく使わないウェブページならform関係のルールセットは不要だろうとか、HTML 4.01で書いてるならHTML5関係のルールセットは不要だろうとかそういうのもある。必要な物を必要なだけ使いたい。プログラミングにおけるライブラリでは確実性とかそういうのを重視してそのまま取り込むという選択はありうる。しかしnormalize.cssくらいコンパクトなものならCSSファイルの最適化を重視して取捨選択してやりたい。

こういったそのまま使うとアレな感じを解消するために僕はnormalize.scssを作って使ったりしている。そのままで取り込める必要なルールセットはそのままSassで@importして取り込み、そうでないけど必要なものはコピペして取り込むようにできる。つまり、面倒くさいけどそれなりに一貫性のある作業と引き換えに、normalize.cssの恩恵を受けつつCSSの無駄を削減できることになる。


normalize.scssをどうしようかなーという感じだけど、逆に一歩進めてミックスイン化もしてやろうかみたいな変なやる気が出てきた。