# CSS リセットのカスタマイズ

CSS リセットとは

CSS リセットとは、ブラウザごとに異なるデフォルトの CSS スタイルの違いを解消し、リセットするスタイルシートのことです。
例えば、<h1>タグのサイズや<ul>のインデント、<input>などのフォーム要素のデザインがブラウザによってマージンやパーディングが異なることがあります。この違いをリセットすることで、すべてのブラウザで一貫した見た目のデザインができます。

代表的な CSS リセット

# Eric Meyer’s CSS Reset

すべてのスタイルを完全にリセットするスタイルシートとして有名です。

/* 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;
}

# 9 ルールで CSS Reset

Josh W. Comeauさんの「Custom CSS Reset (opens new window)」記事は、CSSリセットに関する新しいアプローチを提案しています。記事にそれぞれのルールの詳細説明をしてあります。

/* 1. Use a more-intuitive box-sizing model */
*, *::before, *::after {
  box-sizing: border-box;
}

/* 2. Remove default margin */
* {
  margin: 0;
}

body {
  /* 3. Add accessible line-height */
  line-height: 1.5;
  /* 4. Improve text rendering */
  -webkit-font-smoothing: antialiased;
}

/* 5. Improve media defaults */
img, picture, video, canvas, svg {
  display: block;
  max-width: 100%;
}

/* 6. Inherit fonts for form controls */
input, button, textarea, select {
  font: inherit;
}

/* 7. Avoid text overflows */
p, h1, h2, h3, h4, h5, h6 {
  overflow-wrap: break-word;
}

/* 8. Improve line wrapping */
p {
  text-wrap: pretty;
}
h1, h2, h3, h4, h5, h6 {
  text-wrap: balance;
}

/*
  1. Create a root stacking context
*/
#root, #__next {
  isolation: isolate;
}

# 結論

小規模プロジェクトや個人プロジェクトの場合、記事のCSSリセットをそのまま採用しても問題なさそう。大規模プロジェクトはニーズに合わせてカスタマイズすると良い。プロジェクトの要件に応じてアプローチをカスタマイズすれば、より高品質なCSS設計が大事。CSSリセットのこと考えさせた Josh W. Comeau さんありがとうございます。

2024-12-20
  • css

関連記事

Tailwindcss でローディングコンポーネント作成
Nuxt Fontawesome アイコン使う
シェアボタン SNS ソーシャルリンクの作り方
CSS ::-webkit-scrollbar スクロールバーをカスタマイズ
sass-loader エラー
CSS background と conic-gradient で bookmark のブックマーク作る
HTML 特殊文字エンティティ参照
html5 新タグ要素と廃止タグ要素
safari でボタンタップしたら影が残る怪奇現象
css 学習 タイピング風アニメーションを css だけでやってみる
google color palette
フルスクリーン背景画像の 100%表示と iPhone 対応方法
css フルースクリンの背景画像と透けるログイン画面
placeholder text-align プレースホルダーの左寄せ・右寄せ
margin 上下効かない原因
CSS :before & :after pseudo-elements 疑似要素で画像を重ねる