コース一覧
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分

スマホ対応せよ

中段 / 目安 30分

陽葵さんがスマホを差し出してきました。画面には、3列に並んだメニューが横にぎゅうぎゅうに潰れて表示されています。「うちのお客さん、ほぼスマホなの! これ、文字が全部縦になっちゃってて…1列にできない?」

パソコンで気持ちよく見えるレイアウトが、スマホで気持ちよく見えることはまずありません。幅が違えば、置き方も変わるのが当たり前です。CSS はこれをメディアクエリという書き方で解きます。

CSS

@media (max-width: 768px) { .menu-grid { grid-template-columns: 1fr; } }

@media (max-width: 768px) は「画面の幅が768px以下のときだけ、この中のルールを使う」という意味です。中に書くのは、上書きしたいものだけで構いません。3列を1列にしたいなら grid-template-columns の1行だけ書き直せば済みます。全部を書き直そうとしないでください。

順番に1つ注意があります。メディアクエリは 普段のルールより後ろ に書きます。CSS は同じ強さのルールなら後に書いたほうが勝つので、前に置くと普段のルールに上書きされて何も起きません。効かないときはまずこの順番を疑ってください。

ナビゲーションも同じ考え方です。横並びにしている flex-direction を、狭いときだけ column に変えれば縦に積まれます。

完成条件

  • メニューを grid で3列に並べる (普段の表示)
  • ナビゲーションを flex で横並びにする (普段の表示)
  • @media (max-width: 768px) を書き、その中でメニューを1列、ナビを縦並びに上書きする

進め方

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

判定は普段の3列とナビの横並びまでしか見ません。メディアクエリが効いているかは、ブラウザの幅を実際に狭めて自分の目で確かめてください。幅を変えて崩れないと確認するところまでが、この問題です。

課題

  1. .menu-grid を display: grid にし、grid-template-columns で3列に並べて gap で間隔を空ける
  2. .nav-list を display: flex で横並びにする
  3. @media (max-width: 768px) を書き、その中で .menu-grid を1列に上書きする
  4. 同じメディアクエリの中で .nav-list を flex-direction: column にして縦並びに上書きする

ヒント

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

①方針 先に普段のパソコン向けを完成させ、それが気持ちよく見えてからメディアクエリを CSS の一番下に足します。狭いときのルールを先に書くと、順番の負けで効きません

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

できているか

  • メニューがグリッドで並んでいる
  • メニューのカードのあいだに間隔が空いている
  • ナビゲーションが横並びになっている
エディタを読み込んでいます