CSSカスタムプロパティによるカードコンポーネント
CSSカスタムプロパティだけで柔軟なカードコンポーネントを構築し、テーマを簡単に変更できるようにします。
「CSSカスタムプロパティによるカードコンポーネント」はCoddyKit上の無料CSS Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCSS Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CSS Academyコースには全4レッスンが含まれています。
デザインの目標
カードコンポーネントは、コンテンツを格納する自己完結型のコンテナです。デザインの目標は、スペーシングトークンによる一貫したパディング、エイリアストークンによるテーマ対応の色、JavaScriptを使わないレスポンシブなサイズ設定、CSSカスタムプロパティによるバリエーション(elevated、outlined、flat)のサポートです。
カードの基本構造
設定可能な値にはCSSカスタムプロパティを使用し、単一の.cardクラスを使います。内部要素(header、body、footer)はカードのスコープから値を継承します。これにより、コードベース全体でカードのインスタンス間に生じるスタイルのばらつきを抑えられます。
<div class="card">
<h3>Card Title</h3>
<p>Card content styled via custom properties.</p>
</div>
バリエーションクラス
個別のルールセットを記述するのではなく、バリエーションクラスでカードレベルのカスタムプロパティを上書きします。バリエーションクラスでは変更された変数だけを再定義すればよく、変更されないプロパティは繰り返し記述しなくてもベースの値を自動的に継承します。
<div class="card card--elevated">
<p>Elevated variant</p>
</div>
<div class="card card--outlined">
<p>Outlined variant</p>
</div>
カードのテーマ設定
親のテーマクラスが--color-surfaceを変更すると、そのテーマ内にあるすべてのカードの背景が自動的に更新されます。カード固有のテーマ上書きコードは必要ありません。エイリアストークンシステムが透過的に処理します。
レスポンシブなカードのパディング
カスタムプロパティのオーバーライドと clamp() を使うと、パディングを流動的に設定できます。--card-padding: clamp(1rem, 4vw, 2rem) のように定義します。ビューポートが大きいほど余裕のあるパディングになり、小さいビューポートでは最小限のパディングになります。すべてを1つのトークン定義から制御できます。
カードのグリッドレイアウト
CSS Grid の auto-fill と minmax を使ったカードグリッドでは、レイアウトが自動的に整います。grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) のように指定すると、カードが利用可能なスペースを埋め、メディアクエリのブレークポイントなしで自動的に折り返されます。
画像のアスペクト比
画像コンテナに aspect-ratio: 16/9 を指定すると、カード画像のアスペクト比を統一できます。object-fit: cover によって画像がコンテナを埋めるため、元画像のサイズに関係なくカードの高さが揃います。
インタラクション状態
カードを少し浮き上がらせる hover と focus-within の状態を追加します。transform: translateY(-2px) と、より強い box-shadow を使います。transition: transform 200ms ease, box-shadow 200ms ease でアニメーションさせると、滑らかでコンポジターに適したインタラクションのフィードバックになります。
アクセシブルなカードリンク
ストレッチリンクを使ってカード全体をクリック可能にします。カードを相対配置にし、メインリンクを inset: 0 で絶対配置します。スクリーンリーダーはリンクテキストを読み上げ、オーバーレイがカード全体を視覚的に覆うため、マウスユーザーもカード全体を操作できます。
読み込み状態
CSS アニメーションを使ったスケルトンのシマー効果でコンテンツを置き換える .card--loading バリエーションを追加します。background: linear-gradient(90deg, var(--color-skeleton-from), var(--color-skeleton-to)) を background-size: 200% と animation: shimmer 1.5s infinite でアニメーションさせます。
ダークモードのカード
ダークモードでは、--color-surface トークンが明るい色から暗い色へ自動的に変わります。浮き上がったカードの奥行きを box-shadow に依存している場合、暗い背景ではその効果が見えにくくなるため、控えめなボーダーを追加するか、surface の色のコントラストを強めて、ダークモードでも浮き上がりを認識できるようにします。
理解度チェック
CSS カスタムプロパティを使うと、ルールセット全体を複製せずにカードのバリエーションを作成できるのはなぜですか?
まとめ
CSS カスタムプロパティを使ってカードコンポーネントを構築すると、柔軟でテーマに対応し、バリエーションも扱える UI の基本部品になります。ベース変数でデフォルト値を設定し、バリエーションクラスで必要な部分だけを上書きし、テーマクラスで全体を上書きします。レスポンシブなサイズ設定、アクセシブルなリンク、読み込み状態と組み合わせることで、このパターンはデザインシステム全体に無理なく拡張できます。
よくある質問
「CSSカスタムプロパティによるカードコンポーネント」レッスンは無料ですか?
はい。「CSSカスタムプロパティによるカードコンポーネント」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CSS Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CSS Academyコースには全4レッスンが含まれています。
「CSSカスタムプロパティによるカードコンポーネント」で何を学びますか?
CSSカスタムプロパティだけで柔軟なカードコンポーネントを構築し、テーマを簡単に変更できるようにします。 ブラウザで直接実行するハンズオンコードでCSS Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
CSS Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCSS Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「CSSカスタムプロパティによるカードコンポーネント」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCSS Academyレッスンでコードを書いて実行できますか?
はい。すべてのCSS Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- CSSカスタムプロパティによるカードコンポーネント
- モーダルとダイアログのスタイリング
- ドロップダウンとポップオーバーのパターン
- タブコンポーネント: :checkedハックとJSの比較