問いかけ: 「今体験したサイトには、どんな要素・機能がありましたか?」
学習者に発見させる要素:
問いかけ: 「完成形を再現するために、HTMLでどんな要素が必要?」
思考プロセス:
完成形で見えた要素 → HTMLタグで表現
- タイトル部分 → header? h1?
- 進捗バー → どうやって作る?
- タスクリスト → input? label?
- 完了メッセージ → div?
目標: 機能する骨組みを作る(見た目は一切気にしない)
実装戦略:
この段階の成果物:
<!-- 超シンプルな骨組み(装飾なし) -->
<header>
<h1>📚 今日の学習タスク</h1>
<p>目標: CSS装飾とJavaScript動きをマスターしよう!</p>
</header>
<section>
<h2>📈 学習進捗</h2>
<div class="progress-bar">
<div class="progress-fill"></div>
</div>
<p class="progress-text">0 / 6 完了 (0%)</p>
</section>
<!-- タスクリスト -->
<!-- 完了メッセージ -->
問いかけ: 「今のHTMLと完成形、何が違う?」
ギャップ分析:
目標: 完成形と同じ見た目にする(アニメーションは除く)
段階的実装:
全体設定 (5分)
* { margin: 0; padding: 0; box-sizing: border-box; }
body { background: #f3f4f6; font-family: sans-serif; }
カードレイアウト (10分)
.main-header, section {
background: white;
padding: 2rem;
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
進捗バーとタスクアイテム (10分)
静的な見た目が完成形と一致しているか確認
問いかけ: 「完成形では、どこでアニメーションが起きていた?」
発見すべきアニメーション:
目標: マウスを乗せた時の反応を完成形と同じに
実装思考:
.task-item:hover {
/* 何が変化してた? */
/* どんな動きだった? */
}
段階的実装:
:hover
の基本transition
でなめらかにtransform
で浮遊感box-shadow
で影完成形と同じアニメーションになっているかチェック
問いかけ: 「完成形で、クリックしたり操作すると何が起こっていた?」
発見すべき機能:
目標: 完成形と同じ動的動作を実現
実装戦略:
要素取得 (3分)
const checkboxes = document.querySelectorAll('.task-checkbox');
const progressFill = document.getElementById('progressFill');
イベント処理 (7分)
checkboxes.forEach(checkbox => {
checkbox.addEventListener('change', function() {
// ここで何をする?
});
});
進捗計算・表示 (5分)
このアプローチの利点は、明確なゴール(完成形)があることで学習者が迷わない点と、実際の開発現場で使われる逆算・段階的実装の思考を体験できる点です。