css について
アクセシブルでレスポンシブ、保守しやすいインターフェースを作るための CSS 開発ガイドラインです。レイアウトや命名、性能、ブラウザー対応、最新の CSS 実践を扱います。
主な機能
- 01セマンティック HTML と外部スタイルシート
- 02レスポンシブな Flexbox・Grid レイアウト
- 03CSS 変数と BEM 命名
- 04詳細度とスタイルシートの構成
- 05アクセシビリティとブラウザー向けフォールバック
活用シーン
- 01レスポンシブなページレイアウトの設計
- 02コンポーネントのスタイルシート整理
- 03CSS のアクセシビリティと互換性の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill cssインストール後、Claude Code で/cssを入力して読み込まれたか確認します。
詳細
CSS 開発ガイドライン
基本原則
- アクセシビリティと SEO を向上させるため、セマンティック HTML を記述します
- スタイル設定には CSS を使用し、インラインスタイルは避けます
- メディアクエリと柔軟なレイアウトを使用して、レスポンシブデザインを実現します
- インラインスタイルや埋め込みスタイルより、外部スタイルシートを優先します
レイアウト手法
Flexbox
- 1 次元のレイアウト(行または列)には Flexbox を使用します
justify-contentとalign-itemsを活用して配置します- レスポンシブな折り返しには
flex-wrapを使用します - 一貫した間隔を保つため、マージンより
gapプロパティを優先します
Grid
- 2 次元のレイアウトには CSS Grid を使用します
grid-template-columnsとgrid-template-rowsでグリッドテンプレートを定義します- 名前付きテンプレート領域には
grid-areaを使用します - レスポンシブなグリッドには
auto-fitとauto-fillを活用します
単位とタイポグラフィ
- ユーザー設定を尊重するため、タイポグラフィには
rem単位を使用します - コンポーネントに対する相対的なサイズ指定には
em単位を使用します - フォントサイズに
pxを使うのは避け、境界線や固定要素に限定します - 適切な場合は
clamp()で流動的なタイポグラフィを実装します - 全画面レイアウトでは、ビューポート単位(
vw、vh)を慎重に使用します
CSS 変数(カスタムプロパティ)
:rootにデザイントークンを CSS 変数として定義します- 色、間隔、タイポグラフィ、影には変数を使用します
- コンテキストごとに変数を上書きして、テーマを実装します
- 意味が分かる名前を変数に付けます(例:
--color-primary、--spacing-md)
命名規則
BEM 手法
- ブロック:独立したコンポーネント(例:
.card) - エレメント:ブロックの一部(例:
.card__title) - モディファイア:ブロックまたはエレメントのバリエーション(例:
.card--featured)
ベストプラクティス
- クラス名には小文字とハイフンを使用します
- スタイル設定に ID を使うのは避け、JavaScript のフック用に限定します
- 単一クラスのセレクターを使用し、詳細度を低く保ちます
- スタイルの競合を防ぐため、スタイルの適用範囲をコンポーネントに限定します
詳細度の管理
- 可能な限り、詳細度を 0-1-0(単一クラス)に保ちます
!important宣言は避けます- カスケードは意図的に使用し、偶発的な適用を避けます
- 詳細度の制御には CSS レイヤー(
@layer)を検討します
レスポンシブデザイン
- モバイルファーストのメディアクエリを実装します
- 柔軟なレイアウトには相対単位を使用します
- 複数のビューポートサイズでテストします
- コンポーネント単位のレスポンシブ対応には、コンテナクエリを検討します
パフォーマンス
- セレクターの複雑さを最小限に抑えます
- 深くネストしたセレクターは避けます
- 効率的なセレクター(要素セレクターよりクラスセレクター)を使用します
- 独立したコンポーネントには CSS のコンテインメントを活用します
- ファーストビューのコンテンツにはクリティカル CSS を検討します
モダン CSS の機能
- 比率の維持には
aspect-ratioを使用します - Flexbox と Grid で
gapを活用します - 論理プロパティ(
margin-inline、padding-block)を使用します transitionプロパティで滑らかなトランジションを実装します- 機能検出には
@supportsを使用します
構成
- スタイルシートを論理的に構成します(ベース、レイアウト、コンポーネント、ユーティリティ)
- ファイルはモジュール化し、役割を絞ります
- 複雑なスタイルにはコメントで説明を加えます
- 宣言内のプロパティ順序を統一します
ブラウザー互換性
- 必要に応じてベンダープレフィックスを使用します(Autoprefixer の利用を検討してください)
- 対象ブラウザーでテストします
- 新しい機能にはフォールバックを用意します
- プログレッシブエンハンスメントのアプローチを採用します
アクセシビリティ
- 十分な色のコントラストを確保します(最低でも WCAG AA)
- キーボード操作用に、視認できるフォーカススタイルを用意します
- スクリーンリーダーに影響する方法でコンテンツを非表示にするのは避けます
- アニメーションには
prefers-reduced-motionメディアクエリを使用します
コメント
Markdown 対応