第2章 Reset CSSの特色
Reset CSSは2004年に生まれて数多くのReset CSSが生まれてきたであります。Reset CSSは年代によって思想や宣言されているスタイルが少しずつ変わっているでありますよ。ここでは有名なReset CSSを7個見ていくでありますよー!うおー!
2.1 Hard reset
Hard resetは2004年に発表された、おそらく最初のReset CSSであります*1!最初のReset CSSだけあって単純であります(リスト2.1)。
Hard resetという名は「A Comprehensive Guide to CSS Resets*2」という記事で出てきたであります。当時の状況はよく分からないので、ここからはわたしの勘によって書くでありますよー!
[*1] https://web.archive.org/web/20150905184045/http://leftjustified.net/journal/2004/10/07/css-negotiation/
[*2] http://sixrevisions.com/css/a-comprehensive-guide-to-css-resets/
Hard resetが発表されたときは、ブラウザ間でmargin
やpadding
の値に差があることに関心があったようであります。そのためユニバーサルセレクタでmargin
とpadding
を0
にして、ブラウザ間のmargin
やpadding
の値に差があるのを無かったことにしたようでありますよ。
2.2 Eric Meyer's Reset CSS
Eric MeyerというCSSへ対しとても貢献している人がいるであります。Eric Meyerの実績はすごいでありますよ!*3
- オライリーから出版されたCSS: The Definitive Guide*4(日本語版はCSS完全ガイド*5)を執筆
- 上記の本以外にも多数の本を執筆*6
- css-discuss.orgの立ち上げ*7
- スライドショー用のファイルフォーマットS5を考案*8
- Netscape DevEdgeやCase Western Reserve University、Encyclopedia of Cleveland Historyのプロジェクトリーダーとデザイナーだった
[*3] https://www.linkedin.com/in/meyerweb/
[*4] http://shop.oreilly.com/product/9780596527334.do
[*5] https://www.oreilly.co.jp/books/487311232X/
[*6] https://en.wikipedia.org/wiki/Eric_A._Meyer#Bibliography
[*7] http://www.css-discuss.org/
[*8] https://en.wikipedia.org/wiki/S5_(file_format)
最近ではその功績にコミュニティが敬意を払って、6歳で亡くなってしまった娘の名前をCSSの色名beccapurple
として追加しようと提案されたであります*9。そして本人と亡くなってしまった娘の要望*10によって、rebeccapurple
としてCSS Color Module Level 4*11に追加されたであります!すごいであります!
[*9] https://discourse.wicg.io/t/name-663399-becca-purple-in-css4-color/225
[*10] http://meyerweb.com/eric/thoughts/2014/06/19/rebeccapurple/
[*11] https://drafts.csswg.org/css-color/#named-colors
そのEric MeyerがHard resetの問題点を踏まえた上で作ったReset CSSがEric Meyer's Reset CSSであります。Hard resetの問題点は次の2点であります。これらの問題を解決するためにそれぞれの要素ごとにリセットしたのがEric Meyer's Reset CSSであります!
- ユニバーサルセレクタを使って
margin
やpadding
を0
にするやり方がフォーム関連の要素に対してどういった影響があるか分からない margin
やpadding
を0
にするだけでなく、フォントに関わる一貫したスタイル宣言をしたい
Eric Meyer's Reset CSSのソースコードはhttp://meyerweb.com/eric/tools/css/reset/であります!
2.3 YUI 3 Reset CSS
Yahoo!が主に開発していたYUI libraryに含まれるReset CSSであります!ちなみにYUI 3はこれからメンテナンスをおこなわないというアナウンスをしているのであります*12。
[*12] https://yahooeng.tumblr.com/post/96098168666/important-announcement-regarding-yui
他のReset CSSに無いものとして、html要素に対しcolor
プロパティやbackground
プロパティが宣言されているでありますよ。ただYUI 2からReset CSSはほぼ更新されていない*13*14であります。なのでHTML5で追加された要素の宣言は無いであります*15。
[*13] YUI 2のReset CSSを見てみると2008年から内容がほぼ変わっていないであります
[*14] https://github.com/yui/yui2/blob/324b3755ea4f3ac643572eb839d85c09801aac5f/build/reset/reset.css
[*15] https://github.com/yui/yui2/blob/master/src/reset/css/reset.css
2.4 HTML5 Doctor Reset CSS
HTML5を使った開発について発信していたHTML5 Doctorで発表されたReset CSSであります!HTML5 Doctor Reset CSSのソースコードはhttp://html5doctor.com/html-5-reset-stylesheet/であります!
HTML5 Doctor Reset CSSはEric Meyer's Reset CSSのv1.0を元に作られたものでありますよ。Eric Meyer's Reset CSSのv1.0は作られた時期が2008年2月12日なので、HTML5で追加された要素のスタイル宣言がなかったであります。HTML5 Doctor Reset CSSはそこにHTML5で追加された要素のスタイル宣言を追加しているであります。他にもいろんな要素に独自のスタイル宣言をしているであります!
ちょっと眠くなったので、ここからはビーバー殿にまかせてわたしは寝るであります。
2.5 normalize.css
プレーリーさんが寝てしまったのでここからはおれっちが説明するっす。
normalize.cssはそれまでのReset CSSに代わるReset CSSとして出てきたっす。それまでのReset CSSはブラウザが既定で適用するスタイルをほぼすべてリセットしていたっす。
normalize.cssは今までと違ってブラウザが適用するスタイルで使えそうなものは残しているっす。あとで説明するsanitize.cssやressと違って、作者の意見が無くて純粋にブラウザのスタイルを正規化しているっす*16。
[*16] v5.0.0まではスタイル宣言に作者の意見が含まれていたのですが、v6.0.0でそれらがすべて取り除かれたっす
ソースコードにはなぜその宣言をしたか書かれているので読むだけでも勉強になるっす。
2.6 sanitize.css
normalize.cssをNicolas Gallagherとともに作ったJonathan Nealが作ったReset CSSっす。Eric Meyer's Reset CSSやnormalize.cssなどを元に多くの人が書いたスタイル宣言を含んだのがsanitize.cssっすね。たとえばhtml要素にbox-sizing: border-box;
を宣言して、ユニバーサルセレクタでbox-sizing: inherit;
を宣言しているっす(リスト2.2)。こうすることで特定の要素に対してwidthやheightを宣言するときに値の計算がしやすくなるっす。
2.7 ress
最後はA modern CSS resetと名乗るressっすね。ressはnormalize.cssの宣言を引き継ぎつつ、Hard resetのようにユニバーサルセレクタを使ってすべての要素に対しmargin
やpadding
を0
にしているっす。またsanitize.cssと同じくすべての要素に対してbox-sizing: border-box;
を宣言しているっす。こうする利点はsanitize.cssの説明を読んでほしいっす。フォームに関連する要素もA modern CSS resetと名乗るとおり、大胆にユーザーエージェントスタイルシートの宣言をリセットしているっす。