コース一覧
HTML/CSS道場 ハレノヒ珈琲を開店させる10問
ダークテーマ切替対応

HTML/CSS道場 ハレノヒ珈琲を開店させる10問

HTML と CSS の基本を終えた人が、白紙から画面を組み立てる演習専用コースです。解説はありません。依頼と完成条件だけを読み、見本に近づけていきます。手が止まったときのために、方針・使う構文・部分解の3段階のヒントを各問に用意しています。1枚のカードから始まり、ナビゲーション、表、ヒーロー、グリッド、フォーム、フッターを経て、最後はカフェのランディングページを1枚まるごと作るところまで、10問で主要なレイアウトを一巡します。1問15分から45分、全10問で約5時間です。HTML/CSS入門を終えて「写経はできるが白紙からは書けない」と感じている方に向いています。

1
初段
01. メニューカードを再現しよう15分
02. ナビゲーションバー15分
03. 料金表20分
04. ヒーローセクション20分
2
中段
01. メニュー一覧グリッド25分
02. お問い合わせフォーム25分
03. フッター(3カラム)25分
04. スマホ対応せよ30分
3
師範
01. ダークテーマ切替対応35分
02. 総合 カフェLPを1枚再現45分

ダークテーマ切替対応

師範 / 目安 35分

閉店後の店内で、陽葵さんが照明を落としながら言いました。「夜のバー営業も始めるの。サイトも夜っぽい配色に切り替えられたらいいなって。切り替えるボタンは知り合いに書いてもらったから、色の仕込みだけお願い!」

ここまで色は #f7f3ec のように 値 で書いてきました。それだと配色を変えるとき、CSS の中に散らばった同じ色をすべて探して書き換えることになります。10か所あれば10回、1つ見落とせばそこだけ昼のまま残ります。

解き方は、色を値ではなく 意味 で持つことです。CSS には変数 (カスタムプロパティ) があります。

CSS

:root { --bg: #f7f3ec; --text: #3b3129; --accent: #b3612f; } body { background-color: var(--bg); color: var(--text); }

:root はページ全体を指すセレクタで、ここに --bg のように2本のハイフンで始まる名前を定義すると、どこからでも var(--bg) で呼び出せます。以降、CSS の中に生の色コードはほとんど残りません。「背景の色」「文字の色」「差し色」という 役割 だけが残ります。

夜の配色はこう上書きします。

CSS

.dark { --bg: #24201c; --text: #f0e8dd; }

変数は近いところの定義が勝つので、body に dark クラスが付いた瞬間、var(--bg) を使っているすべての場所が一斉に夜の色に変わります。書き換えるのは変数の定義3行だけで、var() を書いた側は1文字も触りません。これが設計です。

完成条件

  • :root に --bg、--text、--accent の3つの変数を定義する。昼の値は starter でいま使っている色をそのまま引っ越して、--bg は #f7f3ec、--text は #3b3129、--accent は #b3612f とする
  • 背景色・文字色・差し色を、生の色コードではなく var() で指定する
  • .dark を書き、その中で --bg と --text を夜の色に上書きする。夜の色は自分で選んでよい

進め方

白紙から書いてください。手が止まったらヒントを開けます。ヒントは3段階で、①方針、②使う構文、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。

切り替えの動きは、body タグの class に dark を手で書き足せば確かめられます。書き足したときに何色変わるかを数えてください。変数を使えていないところだけが昼のまま取り残されます。

課題

  1. :root に --bg (#f7f3ec)、--text (#3b3129)、--accent (#b3612f) の3つの変数を定義する
  2. body の背景色と文字色を var(--bg) と var(--text) で指定する
  3. 見出しやボタンの差し色を var(--accent) で指定する
  4. .dark を書き、その中で --bg と --text を夜の色に上書きする

ヒント

前のヒントを開くと次が開きます。開かずに解けると未開封クリアです

①方針 先に CSS の一番上に `:root` のまとまりを作り、いま使っている色をそこへ引っ越します。引っ越し終わってから、元あった場所を var() に置き換えていくと迷いません

ヒント 2ヒント 1 を開くと読めます
ヒント 3ヒント 2 を開くと読めます
index.html
style.css
プレビュー

できているか

  • 昼の背景色が変数 --bg として定義されている
  • 昼の文字色が変数 --text として定義されている
  • 差し色が変数 --accent として定義されている
  • 見出しの色が差し色になっている
エディタを読み込んでいます