リセットCSSってなんですか?必要なの?モダンリセット最新版!

Webサイトを作っていると、ブラウザ間でスタイルの見た目がずれることがあります。このずれを解決するために用いられるのが「リセットCSS」です。今回は、リセットCSSの解説やタイプ別の特徴、おすすめの使い方。さらに最新を取り入れた「2024年モダンリセットCSS」をご紹介します。
リセットCSSとは?
リセットCSSは、各ブラウザがデフォルトで適用するスタイル(ユーザーエージェントスタイルシート)を初期化し、統一されたベースラインを持たせるためのスタイルシートです。これにより、意図しない余白や見た目のずれを防ぐことができます。
- ブラウザ間での見た目の違いを解決する
- CSSコードをクリーンな状態で使用するための基礎を作る
ユーザーエージェントスタイルシートの詳細な内容は下記のページをご参照ください!


主なリセットCSS
Eric Meyer’s Reset CSS
リセットCSSの先駆者であり、現在でも常用されています。オールリセット型で、すべての要素を初期化するので、クリーンなスタイルの製作が可能になります。
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; }
Normalize.css
リセットCSSの代わりに「ブラウザ間の差異を埋める」ことを目的としたモダンリセット。デフォルトスタイルを守りながら平均化する設計なので、見た目が変わらない・・・と言われるリセットCSS。ただ、Normalize.cssに追加でオリジナルCSSを記述するという方法も多いリセットCSSです。
Andy Clarke’s Universal Reset
特定の要素やスタイルを初期化し、必要最低限のリセット。負荷が軽く、スマートなリセット設計
/* Universal Reset 例 */ * { margin: 0; padding: 0; box-sizing: border-box; } html, body { height: 100%; font-family: sans-serif; } a { text-decoration: none; color: inherit; } ul, ol { list-style: none; }
Modern Reset CSS (モダンリセット)
最近注目されている新しいリセットCSSで、FlexboxやCSS Gridなどの最新技術にも対応しています。最新のブラウザ技術に対応しており、モダンなデザインやレイアウトを効率よく実現可能。モバイルファースト設計を基盤にしており、レスポンシブデザインにも最適でフォームやメディア要素(画像、ビデオなど)の扱いを統一し、余計なスタイルのばらつきを削減しています。
/* Modern Reset CSS 例 */ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } html { font-size: 100%; line-height: 1.6; scroll-behavior: smooth; } body { margin: 0; font-family: 'Helvetica Neue', Arial, sans-serif; color: #333; background-color: #f8f8f8; } img, video { max-width: 100%; height: auto; } button, input, textarea, select { font: inherit; }
2024年版モダンリセットCSS
以下は、最新のブラウザ機能やモダンなデザインの要件を取り入れみました。2024年版モダンリセットCSSを作成したものです。使う際は、作られるサイトに合わせてカスタマイズして使います。作られるコードによっては、不必要な箇所が出てきますので、その箇所は削除し、また必要なところは追加しながら使っていきます。
/* 2024年版モダンリセットCSS */ :root { --color-text: #333; --color-background: #fff; --color-link: #005fcc; --color-link-hover: #004bb5; --color-focus: #005fcc; --color-focus-visible: #ffcc00; --font-family: 'Inter', 'Helvetica Neue', Arial, sans-serif; --spacing-unit: 1rem; } html, body, h1, h2, h3, h4, h5, h6, p, ul, ol, li, figure, blockquote, table, th, td { margin: 0; padding: 0; } *, *::before, *::after { box-sizing: border-box; } html { font-size: 16px; /* ベースフォントサイズ */ line-height: 1.5; -webkit-text-size-adjust: 100%; /* モバイルでのフォントサイズ調整を無効化 */ scroll-behavior: smooth; /* スムーズスクロールをデフォルトに */ } body { margin: 0; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; color: var(--color-text, #333); background-color: var(--color-background, #fff); min-height: 100vh; /* 全画面の高さを確保 */ text-rendering: optimizeSpeed; /* パフォーマンスを最適化 */ } img, picture, video, canvas, svg { display: block; /* デフォルトのインライン表示をブロックに変更 */ max-width: 100%; /* 幅を親要素に合わせる */ height: auto; /* 縦横比を維持 */ } input, button, textarea, select { font: inherit; /* フォントを親要素に継承 */ color: inherit; background: none; border: none; outline: none; /* デフォルトのスタイルを初期化 */ } a { text-decoration: none; color: inherit; /* リンクの色を継承 */ cursor: pointer; } nav ul, nav ol { list-style: none; /* リストのスタイルを初期化 */ } table { border-collapse: collapse; /* セルの隙間を除去 */ width: 100%; /* テーブルの幅を親要素に合わせる */ } button { cursor: pointer; } textarea { resize: none; /* デフォルトのリサイズを無効化 */ } :focus { outline: 2px solid var(--color-focus, #005fcc); /* フォーカス時の視覚的なアクセント */ outline-offset: 2px; } :focus-visible { outline: 3px solid var(--color-focus-visible, #ffcc00); /* 視覚的なフォーカス表示 */ outline-offset: 3px; } ::placeholder { color: #aaa; /* プレースホルダーの色を調整 */ opacity: 1; /* 透明度を確保 */ } @media (prefers-color-scheme: dark) { body { background-color: #121212; color: #e0e0e0; } a { color: #90caf9; /* ダークモード時のリンク色 */ } ::placeholder { color: #666; } }