中級編のProject03にチャレンジ

Figma のデザインカンプをもとに、HTML と CSS で Web ページを“再現する力”にさらに動きを加えていきます。今回は今注目を集めているCSSアニメーションを使って様々な動きを追加していきます。

下記の デモページFigmaデザインカンプ を参照しながら進めます。

STEP
フォルダを作成しよう

作業用フォルダを 1 つ準備します。名前は任意ですが、ここでは project03 とします。

フォルダ内には以下のように作成をしておきます

project03/
├── index.html
├── style.css
├── reset.css
└── images/   ← Figmaから書き出した画像を入れるフォルダ
STEP
Figmaから画像をエクスポート

Figma のデザインカンプを見ながら必要な画像を書き出します。

書き出し方法が不安な方はこちら

あわせて読みたい
Figmaでアイコン作成とエクスポートしてみよう 今までの学習を踏まえて、下記のアイコンを作成してみましょう。 基本フレーム 新しいキャンバスを開いたら、32px * 32px のフレームを作成します。32pxは見出し1の大...
STEP
reset.css をコピーして貼り付ける

今回の課題用にカスタマイズした リセットCSS を用意しています。

コードをコピーし、reset.css に貼り付けましょう。
/* ========================================
   2025年版モダンリセットCSS
   WebTraining.jp Recommended
======================================== */
:root {
  /* メインカラー(くすみピンク) */
  --color-primary: #e8a6b8;
  --color-primary-dark: #cc869b;
  --color-primary-light: #f7e8ed;
  /* ベース背景 */
  --color-bg: #ffffff;
  --color-bg-sub: #faf7f8;

  /* 文字色(チョコブラウン) */
  --color-text: #6b4f3a;

  /* 枠線(淡いクッキー色) */
  --color-border: #e7d8cf;

  /* リンク */
  --color-link: #d27a92;
  --color-link-hover: #bb617a;

  /* フォーカス */
  --color-focus: #cc869b;
  --color-focus-visible: #e8a6b8;

  /* フォント */
  --font-family: "Kosugi Maru", sans-serif;
  --title-font-family: "Delius Swash Caps", cursive;

  /* サイズ系 */
  --font-size-base: 16px;
  --line-height-base: 1.75;
  --spacing-unit: 1rem;
}

/* ========================================
   基本リセット
======================================== */
html,
body,
h1,
h2,
h3,
h4,
h5,
h6,
p,
ul,
ol,
li,
figure,
blockquote,
table,
th,
td {
  margin: 0;
  padding: 0;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

/* ========================================
   HTML・BODY設定
======================================== */
html {
  font-size: 100%; /* 基本16px */
  line-height: var(--line-height-base);
  -webkit-text-size-adjust: 100%; /* モバイル文字サイズ自動調整防止 */
  scroll-behavior: smooth;
}

@media (max-width: 768px) {
  html {
    font-size: 87.5%; /* 約14px */
  }
}

body {
  margin: 0;
  font-family: var(--font-family);
  font-size: var(--font-size-base);
  color: var(--color-text);
  background-color: var(--color-bg);
  min-height: 100vh;
  text-rendering: optimizeSpeed;
}

/* ========================================
   メディア要素
======================================== */
img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
  height: auto;
  vertical-align: bottom;
}
video {
  filter: drop-shadow(0px 0px #fff);
}
/* ========================================
   テキスト要素
======================================== */
a {
  text-decoration: none;
  color: inherit;
  cursor: pointer;
}
a:hover {
  color: var(--color-link-hover);
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-weight: normal;
}

/* ========================================
   リスト・ナビゲーション
======================================== */
ul,
ol,
nav ul,
nav ol {
  list-style: none;
}

/* ========================================
   フォーム系要素
======================================== */
input,
button,
textarea,
select {
  font: inherit;
  color: inherit;
  background: none;
  border: none;
  outline: none;
}

button {
  cursor: pointer;
}

textarea {
  resize: none;
}

::placeholder {
  color: #aaa;
  opacity: 1;
}

/* ========================================
   テーブル
======================================== */
table {
  border-collapse: collapse;
  width: 100%;
}

/* ========================================
   フォーカス表示(アクセシビリティ対応)
======================================== */
:focus {
  outline: 2px solid var(--color-focus);
  outline-offset: 2px;
}

:focus-visible {
  outline: 3px solid var(--color-focus-visible);
  outline-offset: 3px;
}

/* ========================================
   ダークモード対応
======================================== */
@media (prefers-color-scheme: dark) {
  body {
    background-color: #121212;
    color: #e0e0e0;
  }

  a {
    color: #90caf9;
  }

  a:hover {
    color: #64b5f6;
  }

  ::placeholder {
    color: #666;
  }
}
あわせて読みたい
Reset CSSとは?Webデザインを始めるなら必ず押さえておきたい初期化スタイル+モダンCSS Webサイトをコーディングしていて、「ブラウザによって少し見た目が違うな…?」と感じたことはありませんか?実はそれ、ブラウザごとに設定されている「初期スタイル(U...
STEP
HTML(index.html)を作成しよう

HTMLは、Figmaで作成したデザインカンプを見ながら構造を意識して作成します。
このステップの目的は、見た目を整えることではなく、「どこに、どんな意味のコンテンツがあるのか」を
HTMLで正しく表現すること
です。

<header><main><footer> などのセマンティック要素を使って、ページの役割が分かるHTMLを書いてみましょう

  • ページの一番上には 店名を <h1> で配置し、<header> 要素を使いましょう
    • <header> には、サイトタイトルやナビゲーションをまとめます
  • ページの主な内容は <main> 要素でまとめましょう
    • About / Shop / Access など、ページの中心となる情報を配置します
  • ページ内の各コンテンツは <section> 要素で区切りましょう
    • それぞれのセクションには <h2> を配置し、内容のまとまりを表します
  • 商品一覧など、画像と説明がセットになった内容
    • <figure><figcaption> を使うと、意味が分かりやすくなります
  • キービジュアルや装飾的な要素は、コンテンツの意味を持たないため <div> を使って構成しても問題ありません
あわせて読みたい
HTML基礎 はじめてHTMLに触れる方のための「HTML基礎」講座です。このトレーニングでは、自己紹介ページの作成からスタートして、見出し・リスト・画像・リンク・表・フォームな...
STEP
CSS(style.css)をFigmaを参考に書いてみよう

次に、style.css を作成していきます。このステップでは、仕様書に書かれている内容をヒントにしながら、Figmaのデザインカンプをよく観察し、自分で必要なCSSを考えて書くことを目的とします。参考にしながら可能な限り近づけていきましょう。

■ レイアウト設計

コンテンツ幅

  • メインコンテンツの最大幅:960px
  • 画面サイズに応じて縮小する可変レイアウト
  • 左右中央寄せ

■フォント設計(書体)

使用フォント

  • 基本フォント:Kosugi Maru(本文・説明文)
  • 見出し・ナビゲーション:Delius Swash Caps
  • フォントは Google Fonts から読み込む

■文字色・配色ルール

基本文字色

  • 通常テキスト:CSS変数 --color-text

見出し色

  • h1 / h2 などの見出し:CSS変数 --color-primary-dark

リンク色

  • 通常時:--color-link
  • ホバー時:--color-link-hover

■背景色・枠線

背景色

  • ページ全体の背景:--color-bg-sub
  • セクション背景(必要に応じて):--color-primary-light

枠線

  • 区切り線・セクション境界:--color-border

■背景色・枠線

背景色

  • ページ全体の背景:--color-bg-sub
  • セクション背景(必要に応じて):--color-primary-light

枠線

  • 区切り線・セクション境界:--color-border

■見出しデザイン

h1(サイトタイトル)

  • フォントサイズ:32px 前後
  • 太さ:bold
  • 見出し用フォントを使用
  • ヘッダー内に配置

h2(セクションタイトル)

  • 中央揃え
  • 見出し用フォントを使用
  • 下線や区切り線を使い、セクションの切り替わりを分かりやすくする

■セクション構成

About / Shop / Access

  • 各セクションは <section> 要素で構成
  • セクションごとに十分な余白を確保する
  • 余白量は デザインカンプを見て判断

■商品一覧

レイアウト

  • Grid レイアウトを使用
  • 画面サイズに応じて自動でカラム数が変わる設計

構成

  • 商品1点につき <figure> 要素を使用
  • 商品名・説明は <figcaption> に記述

■アニメーション(fadein)

表示アニメーション

  • スクロールに合わせて、
  • ふわっと下から表示される演出
  • CSSアニメーションのみで実装(JavaScript は使用しない)

上記以外の余白は Figmaデザインを参考にして調整してください。
見た目が近ければ余白などは任意でもかまいません。また Figma通りに完全再現できていなくても問題ありません。
Projecr02は細部に渡る デザインの再現をCSSでできるかを体験することが目的です。CSSの基礎トレーニングは下記を参考にしてください。

あわせて読みたい
CSS基礎 この「CSS基礎」では、Web制作でよく使うプロパティを中心に学習していきます。それぞれのプロパティがどのような役割を持ち、どんな値を指定できるのかを、実際にコー...
あわせて読みたい
CSS-CLASS設計 この「CSS-CLASS設計」では、CSSを記述する際にどのような class名 を付けるべきか迷う場面や、実際の現場でどのような命名ルールが使われているのかわからないといった...
あわせて読みたい
CSS応用と実践 この「CSS応用と実践」では、より実務に近い装飾表現やインタラクションを通して、CSSの幅広い表現力をしっかり身につけていきます。基本のプロパティを理解した上で、...
吹き出し
WebTraining AI
WebTraining AI へようこそ!
HTML / CSS / JavaScript / Wordpress/ PHP など、 コードやプログラミングについて何でも質問できます。