構造を意識したCSSクラス名をつけてみよう

  • HTML構造に対して、親→子の流れを意識したクラス名を考える練習を行う
  • 命名の工夫で、CSSの保守・管理がしやすくなることを実感する

作成ファイル・保存場所

前回作成したcss-class フォルダに以下のファイルを作成しましょう。
今回トレーニングするための HTMLファイルをダウンロードします。そのファイルに classの設定を行い、そのclassに対して、CSS ファイルを作成し、プロパティの設定を行います。

ファイル名内容
css-class02.htmlクラス名を追加するためのHTMLファイルを使用 コピーしてご利用ください。
style-class02.css自作CSSファイル(リンク設定を行う)
Classをつける前の、HTMLコードは下記をコピーして使用してください。
<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTML課題11</title>
</head>

<body>

    <header>
        <h1>My Website</h1>
        <nav>
            <ul>
                <li><a href="#">トップページ</a></li>
                <li><a href="#services">サービス紹介</a></li>
                <li><a href="#contact">お問い合わせ</a></li>
                </li>
            </ul>
        </nav>
    </header>
    <figure>
        <picture>
            <!-- スマホサイズで縦長画像 -->
            <source media="(max-width: 600px)" srcset="https://dummy.kobeya.com/?width=420&height=1080&text=SP">
            <!-- PCサイズで横長画像 -->
            <img src="https://dummy.kobeya.com/?width=1440&height=600&text=PC 1440*600" width="1440" height="600"
                alt="キービジュアルの説明文">
        </picture>
    </figure>

</body>

</html>

※ CSSファイルはエディタでstyle-class02.cssという名前で、新規作成。
以下のように <head> にリンクしてください

<link rel="stylesheet" href="style-class02.css">

チェックポイント

  • クラス名を見て「どこにある要素か」「どんな役割か」が想像できるか
  • 親要素と関連づいた命名ができているか(例:nav-list-item-a
  • クラスを活かして、CSS装飾がスムーズに書けるか

指示

  1. ダウンロードしたファイル(css-class02.html)を開く
  2. 以下のように、構造を意識したクラス名を追加してください
要素クラス名の例補足
<header>headerheader要素領域
h1header-titleh1要素
<nav>header-navヘッダー内のナビゲーション
<ul>nav-listナビゲーション全体のリスト
<li>nav-list-item各ナビゲーション項目
<a>nav-linkナビのリンクそのもの
figurekeyvisualキービジュアル

HTMLにclassをつけた参考例

HTMLに class をつけた参考例です。
この「css-class02.html」は、クラス名を設定した一例として作成しています。
正解というわけではありませんが、参考として、自分のファイルと見比べてみましょう。
<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>class02</title>
    <link rel="stylesheet" href="style-class02.css">
</head>

<body>
    <header class="header">
        <h1 class="header-title">My Website</h1>
        <nav class="header-nav">
            <ul class="nav-list">
                <li class="nav-list-item">
                    <a href="#" class="nav-link">トップページ</a>
                </li>
                <li class="nav-list-item">
                    <a href="#services" class="nav-link">サービス紹介</a>
                </li>
                <li class="nav-list-item">
                    <a href="#contact" class="nav-link">お問い合わせ</a>
                </li>
            </ul>
        </nav>
    </header>
    <figure class="keyvisual">
        <picture>
            <!-- スマホサイズで縦長画像 -->
            <source media="(max-width: 600px)" srcset="https://dummy.kobeya.com/?width=420&height=1080&text=SP">

            <!-- PCサイズで横長画像 -->
            <img src="https://dummy.kobeya.com/?width=1440&height=600&text=PC 1440*600" width="1440" height="600"
                alt="キービジュアルの説明文">
        </picture>
    </figure>

</body>

</html>
  1. クラスを使って、以下のようなスタイルを style-class02.css に書いてみましょう:

💡 このあとは?完成イメージを見ながらできるだけ自分でCSSを書いてみましょう。
わからない場合は、この課題ページの下部にある CSS 解答例 を参考にしても大丈夫です。

応用ポイント

  • .親名-子名 の命名パターンは、BEMの block__element に近く、後の課題にもつながります
  • 複雑な構造ではなくても、整理されたクラス設計が見た目にも管理にも効果があることを意識しましょう

完成イメージ

CSS解答例

解答例ですので、他の記述方法でも問題ありません。自身のコードと照らし合わせみましょう

/* 初期設定(モバイルベース) */
html {
    font-size: 100%;
    box-sizing: border-box;
    scroll-behavior: smooth;
}

*,
*::before,
*::after {
    box-sizing: inherit;
    margin: 0;
    padding: 0;
}

body {
    font-size: 14px;
    line-height: 1.5;
    font-family: sans-serif;
    background-color: #ffffff;
    color: #333;
}

/* ヘッダー */
.header {
    background-color: #03671e;
    padding: 20px 0;
}

.header-title {
    color: #fff;
    font-size: 1.5rem;
    text-align: center;
    margin-bottom: 20px;
}

/* ナビゲーション */
.nav-list {
    display: flex;
    list-style: none;
    gap: 12px;
    justify-content: center;
}

.nav-link {
    text-decoration: none;
    color: #fff;
}

.nav-link:hover {
    background-color: #333;
}

/* キービジュアル */
.keyvisual {
    width: 100%;
}

.keyvisual img {
    width: 100%;
    height: auto;
    display: block;
    margin-bottom: 60px;
    object-fit: cover;
    max-height: 70vh;
}

/* ─────────────────────── */
/* 600px以上(タブレット〜PC)向けのスタイル */
@media (min-width: 601px) {
    body {
        font-size: 16px;
        line-height: 1.8;
    }

    .header {
        padding: 30px 0;
    }

    .header-title {
        font-size: 2rem;
        margin-bottom: 30px;
    }

    .nav-list {
        gap: 20px;

    }

    .keyvisual {
        max-width: 1440px;
    }

    .keyvisual img {
        max-height: none;
        margin-bottom: 100px;
    }
}
吹き出し
WebTraining AI
WebTraining AI へようこそ!
HTML / CSS / JavaScript / Wordpress/ PHP など、 コードやプログラミングについて何でも質問できます。