きれいなスタイルシートのための CSS フォーマットベストプラクティス
整ったフォーマットの CSS は、保守可能なすべての Web プロジェクトの基盤です。乱雑なスタイルシートはデバッグを遅くし、チームメンバーを困らせ、微妙なバグを引き起こします。このガイドでは、プロの開発者が CSS をきれいで一貫性のある状態に保つために使用する規則、ツール、テクニックを解説します。
CSS フォーマットが重要な理由
フォーマットされていない CSS はフォーマットされた CSS と同じように動作します——ブラウザは空白を気にしません。しかし開発者は気にします。フォーマットの悪いスタイルシートは次の問題を引き起こします:
- マージコンフリクト——複数の開発者が同じファイルを編集した時
- 重複した宣言——テキストの壁の中で見つけにくい
- 新しいメンバーのオンボーディングが遅い
- 隠れたバグ——一貫性のないインデントやネストに隠れている
一貫したフォーマットはこれらの問題を解消し、コードレビューをより速く生産的にします。
インデント規則
主要な 2 つの規則は 2 スペースと 4 スペースです。タブは CSS ではあまり一般的ではありませんが、一部のプロジェクトでは使用されています。
2 スペースインデント(最も人気)
.card {
display: flex;
flex-direction: column;
padding: 1rem;
}
.card__title {
font-size: 1.25rem;
font-weight: 600;
color: #1a1a2e;
}
ほとんどの CSS スタイルガイド——Google や Airbnb を含む——は 2 スペースを推奨しています。これにより、メディアクエリやプリプロセッサのネストで過度な水平スクロールなくネストされたセレクタの可読性を維持できます。
プロパティの順序
プロパティのランダムな順序は CSS で最も一般的なフォーマットミスです。2 つの主要な戦略があります:
1. タイプ別グループ化(推奨)
.element {
/* ポジショニング */
position: absolute;
top: 0;
right: 0;
z-index: 10;
/* ディスプレイとボックスモデル */
display: flex;
align-items: center;
width: 100%;
margin: 0 auto;
padding: 1rem 2rem;
/* タイポグラフィ */
font-family: 'Inter', sans-serif;
font-size: 1rem;
line-height: 1.5;
color: #333;
/* ビジュアル */
background-color: #fff;
border: 1px solid #e2e8f0;
border-radius: 0.5rem;
/* アニメーション */
transition: transform 0.2s ease;
}
2. アルファベット順
一部のチームはプロパティをアルファベット順に並べます。シンプルで予測可能ですが、width と height のような関連プロパティを分離してしまいます。
グループ化アプローチは、ルールセットをスキャンする時により良いコンテキストを提供します。
CSS フォーマッター ツールで CSS を瞬時にフォーマットしましょう。
ネストのベストプラクティス
CSS ネスト(ネイティブまたは Sass のようなプリプロセッサ)は可読性を向上させますが、使いすぎると問題を引き起こします。
良い例:浅いネスト(最大 2〜3 レベル)
.nav {
display: flex;
gap: 1rem;
& .nav__link {
color: #555;
text-decoration: none;
&:hover {
color: #0066cc;
}
}
}
悪い例:深いネスト
深いネストは長く非常に具体的なセレクタを生成し、オーバーライドが困難でパフォーマンスに影響します。良いルール:3 レベル以上ネストしている場合は、構造をリファクタリングしましょう。
自動フォーマットツール
手動フォーマットはスケールしません。チーム全体で一貫性を保つために自動化ツールを使いましょう。
Prettier
Prettier は最も人気のあるコードフォーマッターで、CSS、SCSS、Less をそのままサポートします:
npm install --save-dev prettier
npx prettier --write "**/*.css"
Stylelint
Stylelint はフォーマットを超えてエラーを検出し規則を適用します:
npm install --save-dev stylelint stylelint-config-standard
npx stylelint "**/*.css"
BEM 命名規則
BEM(ブロック・エレメント・モディファイア)は最も広く使用されている CSS 命名規則です:
/* ブロック */
.card { }
/* エレメント(ブロックの一部) */
.card__header { }
.card__body { }
/* モディファイア(ブロックまたはエレメントのバリエーション) */
.card--featured { }
CSS カスタムプロパティ
カスタムプロパティ(CSS 変数)は一貫したフォーマットから大きな恩恵を受けます:
:root {
/* カラー */
--color-primary: #0066cc;
--color-secondary: #6c757d;
/* タイポグラフィ */
--font-family-base: 'Inter', system-ui, sans-serif;
--font-size-base: 1rem;
/* スペーシング */
--spacing-sm: 0.5rem;
--spacing-md: 1rem;
--spacing-lg: 2rem;
}
カテゴリ別に変数をグループ化し、一貫した命名プレフィックスを使用しましょう。
よくあるフォーマットミス
1. セミコロンの欠落
最後の宣言には必ず末尾のセミコロンを含めてください。新しいプロパティを追加する時のバグを防ぎます。
2. 一貫性のないスペーシング
/* 悪い例 */
.header{
color : red;
margin:0;
}
/* 良い例 */
.header {
color: red;
margin: 0;
}
3. 1 行ルール
1 行ルールは git diff をノイズだらけにし、プロパティを見逃しやすくします。常にマルチラインフォーマットを使用しましょう。
FAQ
CSS ではタブとスペースのどちらを使うべきですか?
スペースが CSS の業界標準です。ほとんどのスタイルガイドとフォーマッター(Prettier)はデフォルトで 2 スペースを使います。チームで合意したものを使い、一貫性を保ちましょう。
チームで CSS フォーマットをどう強制しますか?
共有設定ファイルで Prettier をセットアップし、Husky と lint-staged を使った pre-commit フックを追加し、CI パイプラインでフォーマットされていないコードを拒否するように設定しましょう。
関連リソース
- CSS フォーマッター — CSS を瞬時にフォーマットして美化
- コード圧縮ガイド — 本番環境用に CSS を最適化
- HTML フォーマットベストプラクティス — 同じ原則を HTML にも適用
🛠️ 今すぐ試す: CSS フォーマッター — CSS を貼り付けて、完璧にフォーマットされた出力を取得。100% 無料、ブラウザ内ですべて処理。