ブラウザ毎に設定されているデフォルトスタイルの差異をなくし、サイト制作のスタイル設定を効率的に行うことができるリセットCSSやノーマライズCSSを紹介します。すべてを完全にリセットしてしまうものもあれば、リセットは一部にして有用なスタイルは保持するものもあったりと様々なタイプがあるので、自分の癖やプロジェクトガイドラインに合わせて選ぶこともできると思います。
普段からweb制作に携わっているならご存知の方も多いように、webサイトを閲覧する際に使用されるブラウザは様々な種類がありますが、各種HTML要素にはブラウザによってそれぞれ異なるスタイルがデフォルトとして定義されています。
そういったブラウザ毎のスタイルの差異をなくしてサイト制作時のスタイル設定を効率的に行うのに便利なのがリセットCSSとノーマライズCSSで、個人的に以前(といってももう割と前ですが)はとにかく様々な要素のスタイルをリセットするリセットCSSがよく利用されていましたが、最近では有用なスタイルは保持しつつ一部のスタイルをリセットするノーマライズCSSがよく利用されている印象です。
どちらも人によってメリット・デメリットを感じる部分があると思いますし、実際にそれを利用する状況や内容(新規プロジェクトなのか既存プロジェクトに加える形なのかなど)によっても変わったりもするとは思うので、どっちを使うべきということはハッキリと言えませんが、どちらもスタイル設定の効率化に繋がるCSSになります。
ものによってはなぜこのようなスタイル設定を行なっているかをコメントで補足しているものもあったりするので、普段からこういったCSSを利用していない人や自分にしっくりくるものを探しているという人はそういった部分も確認しつつ是非試してみてください。
また、オリジナルのリセット・ノーマライズを使用しているという人でも、こういった他の方が作成したものは何かと参考になる部分も多いと思います。
Reset CSS (Eric Meyer’s CSS reset)
リリースされてから結構経っているので現在では使用しなくなったタグも一部含まれていたりしますが、有名なリセットCSSのひとつです。
ひと通りの要素のmargin
, padding
, border
, font
関連の設定をリセットし、リストマーカーや引用符なども表示させないようにしています。
CSS
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
HTML5 Reset Stylesheet
こちらは上で紹介した「Eric Meyer’s CSS reset」をベースに手を加えられたものになり、やはり現在では使用しなくなったタグが一部含まれていたりと、これから使おうと思ったら少し手を加えたくなるような感じにはなっていますが、有名だと思うリセットCSSのひとつです。
自分も以前はよく利用させてもらっていたり、自作のリセットCSS作成時に参考にさせてもらったりしていました。
CSS
/*
html5doctor.com Reset Stylesheet
v1.6.1
Last Updated: 2010-09-17
Author: Richard Clark - http://richclarkdesign.com
Twitter: @rich_clark
*/
html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var,
b, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
margin:0;
padding:0;
border:0;
outline:0;
font-size:100%;
vertical-align:baseline;
background:transparent;
}
body {
line-height:1;
}
article,aside,details,figcaption,figure,
footer,header,hgroup,menu,nav,section {
display:block;
}
nav ul {
list-style:none;
}
blockquote, q {
quotes:none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content:'';
content:none;
}
a {
margin:0;
padding:0;
font-size:100%;
vertical-align:baseline;
background:transparent;
}
/* change colours to suit your needs */
ins {
background-color:#ff9;
color:#000;
text-decoration:none;
}
/* change colours to suit your needs */
mark {
background-color:#ff9;
color:#000;
font-style:italic;
font-weight:bold;
}
del {
text-decoration: line-through;
}
abbr[title], dfn[title] {
border-bottom:1px dotted;
cursor:help;
}
table {
border-collapse:collapse;
border-spacing:0;
}
/* change border colour to suit your needs */
hr {
display:block;
height:1px;
border:0;
border-top:1px solid #cccccc;
margin:1em 0;
padding:0;
}
input, select {
vertical-align:middle;
}
ちなみに、「Eric Meyer’s CSS reset」と「HTML5 Reset Stylesheet」を改良したものとして以下のようなリセットCSSもあります。
改良といってもほぼ内容は一緒ですが、気になる方はチェックしてみてください。
minireset.css
こちらは割と最近リリースされた簡易的なリセットCSSで、margin
やpadding
のリセットなどを行なってはいますが、上で紹介してきたもののように片っ端からという感じではなく、ブロック要素に対してのみ適応している感じになっています。
また、現在は不要だと思われる記述も削られており、その分頻繁に見かけるようになった全要素へのbox-sizing: border-box;
指定やimg
などに対してmax-width: 100%;
などが記述されています。
CSS
/*! minireset.css v0.0.3 | MIT License | github.com/jgthms/minireset.css */
html,
body,
p,
ol,
ul,
li,
dl,
dt,
dd,
blockquote,
figure,
fieldset,
legend,
textarea,
pre,
iframe,
hr,
h1,
h2,
h3,
h4,
h5,
h6 {
margin: 0;
padding: 0;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: 100%;
font-weight: normal;
}
ul {
list-style: none;
}
button,
input,
select,
textarea {
margin: 0;
}
html {
box-sizing: border-box;
}
*, *:before, *:after {
box-sizing: inherit;
}
img,
embed,
iframe,
object,
audio,
video {
height: auto;
max-width: 100%;
}
iframe {
border: 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
td,
th {
padding: 0;
text-align: left;
}
Normalize.css
これまで紹介してきた様々な要素のスタイルをリセットするCSSとは違い、ブラウザで設定されている有用なデフォルトスタイルを保持し、各HTML要素のスタイルの標準化やバグの修正などを目的としたCSSです。
ひと通りのブラウザもしっかりサポートしており、有名なサービスやフレームワークなどで使用されていることも多いです。
また、CSS内にはなぜこのようなスタイルを指定しているかのコメントが細かく記載されているので、なんとなく使用するのではなく、記述している意図をしっかり理解した上で使用することができます。
※記述量が多いのでコード記載省略。
sanitize.css
上で紹介した「Normalize.css」の開発者のひとりがリリースしたノーマライズCSSで、「Normalize.css」はCSS仕様に準拠する形で作成されているそうですが、この「sanitize.css」は一般的な開発者の期待と好みに準拠して作成されています。
こちらもCSS内になぜそのスタイルを指定するのかのコメントが記載されており、ひと通りのブラウザにも対応しています。
※記述量が多いのでコード記載省略。
ress
こちらは「Normalize.css」をベースにしたモダンなリセットCSSです。
「Normalize.css」がベースとは言っていますが、全要素のmargin
とpadding
のリセットを行なっていたり、box-sizing: border-box;
を適用しているなど結構異なる部分も多いので、「Normalize.css」愛用者が使用した場合は最初違和感を感じるかもしれません。
個人的には普段使用している自作リセットCSSの内容が全体的にこの「ress」に近い内容なので結構好きなリセットCSSです。
※記述量が多いのでコード記載省略。