ローカル変数
CoddyのHTMLジャーニー「Practical Frontend」セクションの一部 — レッスン 4/35。
お気づきかもしれませんが、変数を宣言するために :root をよく使用します。これは、:root がグローバルであるためです。ここで定義された変数は(前述の通り)HTMLページ全体に適用されます。
しかし、時にはページ内の特定の部分だけに影響を与える変数が必要になることがあります。例えば、多くの商品カードがあるオンラインショップを構築することを想像してみてください。.cardクラスの中に変数を作成することで、他の要素に影響を与えずに、それらのカードだけにスタイルを適用することができます。
.card {
--card-color: orchid;
background-color: var(--card-color);
}このようにすることで、変数は .card 要素内でのみ機能するようになり、特定の領域をより細かく制御できるようになります。
チャレンジ
簡単いくつかの商品カードがあるオンラインショップのページが与えられています。あなたのタスクは以下の通りです:
.cardクラスの中に、--card-accentという名前のローカルCSS変数を作成し、その値をcoralに設定してください。- この変数を使用して、カード内の
<h3>見出しのテキストの色を設定してください。 - 同じ変数を使用して、カードの
<button>の背景色を設定してください。
チートシート
CSS変数は、:rootでグローバルに定義するだけでなく、特定のセレクター内でローカルに定義することもできます。ローカル変数は、そのセレクターのスコープ内にある要素にのみ適用されます。
.card {
--card-color: orchid;
background-color: var(--card-color);
}これにより、.card要素内でのみ機能する変数--card-colorが作成され、特定のコンポーネントのスタイリングをより細かく制御できるようになります。
自分で試してみよう
<html>
<head>
<title>Local Variables</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400..900;1,400..900&display=swap" rel="stylesheet"> <style>
/* Global variable for body background */
:root {
--body-bg: #000f26;
--font-family: "Playfair Display", serif;
}
body {
background-color: var(--body-bg);
font-family: var(--font-family);
padding: 20px;
display: flex;
gap: 20px;
justify-content: center;
}
/* Card styles */
.card {
--card-bg: white;
background-color: var(--card-bg);
border-radius: 10px;
padding: 15px;
width: 250px;
text-align: center;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}
.card h3 {
margin-top: 0;
}
.card p {
font-size: 0.9rem;
color: #333;
}
.card button {
border: none;
color: #000f26;
padding: 8px 12px;
border-radius: 5px;
cursor: pointer;
font-weight: bold;
margin-top: 10px;
width: 100%;
}
</style>
</head>
<body>
<div class="card">
<h3>Classic Sneakers</h3>
<p>Comfortable and stylish sneakers for everyday wear.</p>
<button>Buy Now</button>
</div>
<div class="card special">
<h3>Luxury Watch</h3>
<p>Elegant watch with a unique design for special occasions.</p>
<button>Buy Now</button>
</div>
<div class="card">
<h3>Leather Backpack</h3>
<p>Durable, spacious backpack made from premium leather.</p>
<button>Buy Now</button>
</div>
</body>
</html>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。