HTML・CSS
【コーディング実践演習2】Webサイト「うちの金魚たち」をコーディングしよう
INDEX
目次

【コーディング実践演習2】Webサイト「うちの金魚たち」をコーディングしよう

本演習は、HTML/CSS入門編 17章までの学習を終えた時点で取り組んでいただくものです。 以下のダウンロードリンクから問題データをダウンロードしてファイルを開き、指示に従ってページを作成してください。

問題データダウンロードリンク
問題データについて
ダウンロードした「uchikin-site」フォルダの中には、「start」フォルダと「fin」フォルダが入っています。
  • 「start」フォルダには作業用のファイルが入っています。
  • 「fin」フォルダには完成ファイルが入っています。
  • 「うちの金魚たちテキスト.txt」は各ページの原稿です。
まずは完成ファイルを見ずに、指示に従いページを作成してみてください。
作業の準備
  1. 「start」フォルダ内のindex.htmlとcssフォルダ内のreset.cssstyle.cssをエディターで開きます。
  2. ブラウザプレビューします。
■ start/index.html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <title>うちの金魚たち | HOME</title>
  </head>

  <body>
    ウメちゃん タロちゃん ヒメちゃん ごあいさつ
    このサイトでは、我が家に生息する3匹の金魚たちを紹介します!
    全員が飼い主(私)の顔をよく覚えており、私の姿を見つけるとすぐに近寄って来ます!
    ▲ページトップへ Copyright &copy; uchikin All Rights Reserved.
  </body>
</html>
index.html
■ start/css/reset.css(シンプル&ミニマムリセット)
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

ul,
ol {
  list-style: none;
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

button,
input,
textarea,
select {
  font: inherit;
}
reset.css(シンプル&ミニマムリセット)
■ start/css/style.css
@charset "UTF-8";
style.css
作業手順
  1. index.htmlをHTMLタグでマークアップ(構造化)する。
  2. CSSによるスタイリングを行う。
  3. 完成したindex.htmlの複製を作成し、下層ページをコーディングする。
  4. 下層ページが1ページ完成したら、そのページを複製して次のページを作成する。
■ ブラウザプレビュー
 (19311)

完成イメージを確認しよう

  • 今回取り組んでいただく【コーディング実践演習2】では、完成イメージに沿って合計4ページのWebサイトを作成していただきます。
  • 指示された手順に従って作業してください。
  • まずは各ページの完成イメージを確認しましょう。
【動画収録】完成したWebサイト
各ページの完成イメージ
index.html
 (19322)

ume.html
 (19324)

taro.html
 (19326)

hime.html
 (19328)

【STEP1】index.htmlを構造化しよう

  • Webページ制作はHTMLマークアップからスタートします。
  • 右のHTML構造図とブラウザプレビューを参照しながら、index.htmlを以下の手順で適切にマークアップしてください。
index.htmlの構造化作業手順
  1. ページ最上部にタイトルロゴ画像(site-logo.svg)をimgタグで表示し、aタグでリンクを設定(リンク先:index.html)。imgタグには適切なalt属性を追加する。
  2. タイトルロゴ画像はh1タグで囲む。
  3. タイトルロゴ画像の下にulタグとliタグでナビゲーションをマークアップする。
  4. 各リスト項目にはaタグでリンクを設定する。
  5. ulタグはnavタグで囲む。
  6. タイトルロゴとナビゲーションをheaderタグでグループ化する。
  7. ヘッダーの下にメインビジュアル画像(mainvisual.png)をimgタグで表示し、divタグで囲む。
  8. 中見出し「ごあいさつ」と段落テキスト「このサイトでは、...」をマークアップする。段落テキストには改行を入れる。
  9. 中見出しと段落テキストをmainタグで囲む。
  10. 「▲ページトップへ」にページ内リンクを設定する。そのaタグはpタグで囲む。
  11. ページ最下部のコピーライトテキストをpタグでマークアップし、footerタグで囲む。
※ナビゲーションのリンクテキストのリンク先には、index.htmlと同階層に以下のファイルを置くものとします。
項目名
リンク先のファイル名
ウメちゃん
ume.html
タロちゃん
taro.html
ヒメちゃん
hime.html
■ index.htmlのHTML構造図
 (19336)

■ ブラウザプレビュー
 (19338)

コードの入力が終わりましたら、以下の解答を確認して答え合わせをしましょう。

【STEP1】の解答

■ 手順1〜2の解答
<h1>
  <a href="index.html">
    <img src="images/site-logo.svg" alt="うちの金魚たち">
  </a>
</h1>
【STEP1】手順1〜2の解答
【STEP1】手順1〜2の解説
  • imgタグのalt属性の値は「うちの金魚たち」としました。
  • サイトロゴ画像は必ずしもh1タグでマークアップすると決まっているわけではありませんが、このサイトの場合は大見出しとしての意味付けで問題ないと考え、h1タグで構造化しています。divタグで囲んでも間違いではありません。
【画面収録】手順1〜2の解答
■ ブラウザプレビュー
 (19349)

■ 手順3〜5の解答
<nav>
  <ul>
    <li><a href="ume.html">ウメちゃん</a></li>
    <li><a href="taro.html">タロちゃん</a></li>
    <li><a href="hime.html">ヒメちゃん</a></li>
  </ul>
</nav>
【STEP1】手順3〜5の解答
【STEP1】手順3〜5の解説
  • これがナビゲーションの基本的なマークアップです。
  • セマンティック要素であるnavタグでリストを囲みます。
※「HTML/CSS入門編 10章 Flexboxを学ぼう」参照
【画面収録】手順3〜5の解答
■ ブラウザプレビュー
 (19363)

■ 手順6の解答
<header>
  <h1>
    <a href="index.html">
      <img src="images/site-logo.svg" alt="うちの金魚たち">
    </a>
  </h1>
  <nav>
    <ul>
      <li><a href="ume.html">ウメちゃん</a></li>
      <li><a href="taro.html">タロちゃん</a></li>
      <li><a href="hime.html">ヒメちゃん</a></li>
    </ul>
  </nav>
</header>
【STEP1】手順6の解答
【STEP1】手順6の解説
  • headerタグはWebサイトのヘッダーをマークアップするためのセマンティック要素です。
  • ヘッダーとは、Webページやセクションの冒頭部分に配置される情報のことです。
  • 通常、Webページのヘッダーは、以下のような要素を含みます。
    • サイトロゴ、タイトルロゴ
    • ナビゲーション
    • カートアイコン、マイページアイコン、SNSアイコンなど
    • 検索フォーム
  • 今回はタイトルロゴとナビゲーションを含む領域をヘッダーとみなし、headerタグでマークアップしました。
【画面収録】手順6の解答
■ HTML5の主なセマンティック要素一覧(再掲)
※セマンティック要素については「HTML/CSS入門編 10章 Flexboxを学ぼう」の「セマンティック要素とは」節を参照してください。
タグ
意味・用途
<header>
ページやセクションのヘッダー部分
通常はロゴやタイトル、ナビゲーションが含まれる
<nav>
ナビゲーションメニュー(主要なリンクの集まり)
<section>
セクション(テーマごとのまとまり)
<article>
独立したコンテンツとしての記事(ブログ記事やニュース記事など)
<aside>
補足情報(サイドバーなど)
<main>
ページの主要なコンテンツ部分
<footer>
フッター(コピーライトやサイト情報など)
<figure>
画像・図表などのコンテンツを含む要素
<figcaption>
<figure>のキャプション(説明文)
<mark>
強調したいテキスト
<time>
日付・時間の表記
■ 手順7の解答
<div>
  <img src="images/mainvisual.png" alt="">
</div>
【STEP1】手順7の解答
【STEP1】手順7の解説
  • このメインビジュアルは装飾用の画像であり、とくに情報として重要なメッセージが画像に含まれているわけではないので、alt属性の値は空文字にしました。
  • imgタグをdivタグで囲む理由は、以下のとおりです。
    • imgタグはインライン要素であるため、そのまま配置すると隣り合うテキストと横並びになってしまう。そこで、ブロック要素で囲むことにより、改行させ、CSSでスタイリングされる前の視認性を確保したい。
    • divタグに対してCSS(marginなど)を適用することでimg要素のレイアウトがしやすくなる。
【画面収録】手順7の解答
■ 手順8〜9の解答
<main>
  <h2>ごあいさつ</h2>
  <p>
    このサイトでは、我が家に生息する3匹の金魚たちを紹介します!<br />
    全員が飼い主(私)の顔をよく覚えており、私の姿を見つけるとすぐに近寄って来ます!
  </p>
</main>
【STEP1】手順8〜9の解答
【STEP1】手順8〜9の解説
  • このページの主要なコンテンツ部分ですので、mainタグでマークアップします。
【画面収録】手順8〜9の解答
■ 手順10の解答
<body>
    <a id="pagetop"></a>
    <header>
    
    ・・・中略・・・
<p>
  <a href="#pagetop">▲ページトップへ</a>
</p>
【STEP1】手順10の解答
【STEP1】手順10の解説
  • ページ内リンクについては、「HTML/CSS入門編 4章 リンクを設定しよう」の「ページ内リンクを設定しよう」節を参照しましょう。
  • a要素をpタグで囲む理由は、imgタグをdivタグで囲む理由と同じです。
    • aタグはインライン要素であるため、そのまま配置すると隣り合うテキストと横並びになってしまう。そこで、ブロック要素で囲むことにより、改行させ、CSSでスタイリングされる前の視認性を確保したい。
    • 「▲ページトップへ」というテキストは、装飾用の画像と違い、情報としての意味を持ちますので、divタグではなく、pタグでマークアップしました。
ジャンプさせたい先の要素に直接idを付与することも可能です。
※こちらの方が現在では一般的に使われる方法なので、余裕のある人はこちらの方法を使えるようにしておきましょう!
<body id="pagetop">
    <header>
    
    ・・・中略・・・
<p>
  <a href="#pagetop">▲ページトップへ</a>
</p>
【STEP1】手順10の解答(別解)
【画面収録】手順10の解答
■ 手順11の解答
<footer>
  <p>Copyright &copy; uchikin All Rights Reserved.</p>
</footer>
【STEP1】手順11の解答
【STEP1】手順11の解説
  • 著作権表記(Copyright)は文章の一部であり、段落テキストとして扱うのが自然であるため、pタグでマークアップします。
  • footerタグはWebサイトのフッターをマークアップするためのセマンティック要素です。
  • フッターとは、Webページやセクションの下部情報のことです。
  • 通常、Webページのフッターは、以下のような要素を含みます。
    • サイトの著作権情報
    • サイトの運営者情報
    • サイトマップ、利用規約、プライバシーポリシーへのリンクなど
  • 今回はサイトの著作権情報を含む領域をフッターとみなし、footerタグでマークアップしました。
これでindex.htmlのHTMLマークアップが完了しました。
【画面収録】手順11の解答
■ HTMLマークアップが完了したindex.htmlのブラウザプレビュー
 (19406)

【STEP2】CSSファイルを関連付けしよう

  • 続いて、CSSコーディング工程に進みます。
  • CSSフォルダ内のreset.cssstyle.cssを正しい順番でindex.htmlと関連付けしてください。
  • ブラウザプレビューをして余白やリストのマーカーが消去されたことを確認しましょう。
  • 2つのCSSファイルを関連付けたら、スタイリングに使うstyle.cssをエディターで開いておきましょう。
ブラウザプレビュー
 (19410)

コードの入力が終わりましたら、以下の解答を確認して答え合わせをしましょう。

【STEP2】の解答

<head>
  <meta charset="UTF-8" />
  <title>うちの金魚たち | HOME</title>
  <link rel="stylesheet" href="css/reset.css">
  <link rel="stylesheet" href="css/style.css">
</head>
【STEP2】の解答
【STEP2】の解説
  • CSSファイルの関連付けにはlinkタグを使い、href属性で外部CSSファイルの相対パスを指定します。
  • linkタグはheadタグ内に記述します。
  • reset.cssは他のCSSファイルよりも先に読み込ませる必要があるため、style.cssよりも上で読み込ませます。
※「HTML/CSS入門編 9章 リセットCSSを学ぼう」参照
【画面収録】STEP2の解答

【STEP3】Webフォントを指定しよう

  • HTMLの構造化が完了しましたので、CSSコーディングに入ります。
  • まずはページ全体に使用するフォントの指定を行います。
  • 次のGoogle Fontsをbody要素に設定してください。
    • 使用フォント:Kaisei Opti
※文字サイズや太さは各要素に個別に指定しますので、body要素にはフォントの種類のみを指定してください。
 (19483)

■ ブラウザプレビュー
 (19485)

コードの入力が終わりましたら、以下の解答を確認して答え合わせをしましょう。

【STEP3】の解答

<head>
  <meta charset="UTF-8" />
  <title>うちの金魚たち | HOME</title>
  <link rel="stylesheet" href="css/reset.css">
  <link rel="stylesheet" href="css/style.css">
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Kaisei+Opti&display=swap" rel="stylesheet">
</head>
【STEP3】の解答 HTML
body {
  font-family: "Kaisei Opti", serif;
}
【STEP3】の解答 CSS
【STEP3】の解説
  • 埋め込みコード(Embed code)はheadタグ内にコピー&ペーストします。
  • CSSのコードは、font-family部分のみをstyle.cssにコピー&ペーストします。
※Google Fontsの利用方法は「HTML/CSS入門編 7章 Webフォントを使おう」参照
【画面収録】GoogleFontsを指定する

【STEP4】背景画像を指定しよう

  • ページに背景画像を指定します。
  • 以下の設定でbody要素に背景画像を指定してください。
プロパティ
背景画像の指定(リピート)
imagesフォルダ内のbg-uroko.pngまでのファイルパス
背景画像を固定表示するかスクロールさせるか
固定
bg-uroko.png
 (19513)

ブラウザプレビュー
 (19516)

コードの入力が終わりましたら、以下の解答を確認して答え合わせをしましょう。

【STEP4】の解答

body {
  background-image: url(../images/bg-uroko.png);
  background-attachment: fixed;
}
【STEP4】背景画像を指定する1
また、ショートハンドプロパティのbackgroundを使い、以下のように記述してもOKです。
body {
  background: url(../images/bg-uroko.png) fixed;
}
【STEP4】背景画像を指定する2
【STEP4】の解説
  • 背景画像を指定するプロパティはbackground-imageプロパティで、値はurl(背景画像のファイルパス)です。
  • 背景画像を固定するプロパティはbackground-attachmentプロパティで、値はfixedです。
※背景画像は「HTML/CSS入門編 5章 CSSの基本を学ぼう」参照
※ファイルパスは「HTML/CSS入門編 3章 画像を表示しよう」参照
【画面収録】背景画像を指定する

【STEP5】タイトルロゴをスタイリングしよう

  • CSSコーディングは、基本的にHTML中の要素を上から順番にスタイリングしていくという流れがスムーズに制作できます。
  • 下記のHTMLのマークアップ部分にCSSを適用します。
<h1>
  <a href="index.html">
    <img src="images/site-logo.svg" alt="うちの金魚たち">
  </a>
</h1>
HTML
  • 次はタイトルロゴのスタイリングを行います。
  • 以下の設定でタイトルロゴのimg要素にCSSプロパティを指定してください。
    • img要素にはclass名をつけ、classセレクタを使いCSSを記述してください。
    • imgタグにつけるclass名はtitle-logoとしてください。
■ タイトルロゴのCSS指定
プロパティ
380px
マージン
中央配置(上マージン:70px 下マージン:80px)
■ ブラウザプレビュー
 (19536)

コードの入力が終わりましたら、以下の解答を確認して答え合わせをしましょう。

【STEP5】の解答

<img src="images/site-logo.svg" alt="うちの金魚たち" class="title-logo">
【STEP5】タイトルロゴをスタイリングする HTML
.title-logo {
  width: 380px;
  margin: 70px auto 80px;
}
【STEP5】タイトルロゴをスタイリングする CSS
【STEP5】の解説
  • marginの値を3つ記述するショートハンドを使い、margin:上 左右 下;と一括指定しています。
  • img要素はインライン要素ですので、marginによる中央配置はできませんが、reset.cssにimg{display: block;}が記述されているため、ブロックボックスに変換されており、マージンによる中央配置が可能です。
※classセレクタは「HTML/CSS入門編 6章 よく使うセレクタを学ぼう」参照
※width、margin、ブロックボックスは「HTML/CSS入門編 8章 ボックスモデルを学ぼう」参照
【画面収録】タイトルロゴをスタイリングする

【STEP6】ナビゲーションをスタイリングしよう

ナビゲーションのレイアウト指定をしよう
  • 続いて、ナビゲーションのスタイリングを行います。
  • 下記のHTMLのマークアップ部分にCSSを適用します。
<nav>
  <ul>
    <li><a href="ume.html">ウメちゃん</a></li>
    <li><a href="taro.html">タロちゃん</a></li>
    <li><a href="hime.html">ヒメちゃん</a></li>
  </ul>
</nav>
HTML
  • まずはFlexboxによるレイアウトを以下の指示に従い設定してください。
  • navタグにclass名をつけula要素のスタイリングは子孫セレクタを使用してください。
    • navタグにつけるclass名はgnavとしてください。
■ ナビゲーションのレイアウト指定
プロパティ
フレックスボックス
有効(li要素を横並びにする)
水平方向の揃え
中央揃え
子要素同士の間隔
118px
下マージン
94px
■ ブラウザプレビュー(レイアウト指定)
 (19556)

a要素(リンクテキスト)のスタイリング指定をしよう
レイアウトの指定が完了しましたら、a要素初期表示のスタイリングを以下の設定で行ってください。
■ a要素(リンクテキスト)の初期表示のスタイリング指定
プロパティ
背景色
#E11B1E(赤)
130px
高さ
30px
文字色
#ffffff(白)
文字サイズ
22px
文字の太さ
400
文字の装飾
下線なし
ボックスの角丸
22px
Flexbox
有効
子要素の縦方向の揃え
中央揃え
子要素の横方向の揃え
中央揃え
■ a要素(リンクテキスト)のマウスホバー時のスタイリング指定
プロパティ
背景色
#ffffff(白)
文字色
#E11B1E(赤)
枠線
太さ:2px 種類:実線 色:#E11B1E(赤)
■ ブラウザプレビュー(a要素の初期表示のスタイリング)
 (19567)

■ ブラウザプレビュー(a要素のマウスホバー時のスタイリング)
 (19569)

コードの入力が終わりましたら、以下の解答を確認して答え合わせをしましょう。

【STEP6】の解答

ナビゲーションのレイアウト指定をしよう 解答
<nav class="gnav">
  <ul>
    <li><a href="ume.html">ウメちゃん</a></li>
    <li><a href="taro.html">タロちゃん</a></li>
    <li><a href="hime.html">ヒメちゃん</a></li>
  </ul>
</nav>
【STEP6】ナビゲーションのレイアウト指定 HTML
.gnav ul {
  display: flex;
  justify-content: center;
  gap: 118px;
  margin-bottom: 94px;
}
【STEP6】ナビゲーションのレイアウト指定 CSS
【STEP6】ナビゲーションのレイアウト指定をしよう 解説
  • ul要素とa要素のスタイリングの効率性を考慮し、どちらの要素も含むnav要素にclass名をつけ、子孫セレクタで記述します。
    • 今回作成しているページでは、nav要素は1つしかないので、class名をつける必然性はないのですが、一般的なWebサイトでは、ページ内に複数のnavタグをマークアップする場合がありますので、class名をつける習慣を身につけておく方がよいです。
  • ul要素にdisplay:flex;を指定することにより、子要素のli要素が横並びになります。
※子孫セレクタは「HTML/CSS入門編 6章 よく使うセレクタを学ぼう」参照
※Flexboxは「HTML/CSS入門編 10章 Flexboxを学ぼう」参照
【画面収録】ナビゲーションのレイアウト指定
a要素(リンクテキスト)のスタイリング指定をしよう 解答
■ a要素(リンクテキスト)の初期表示のスタイリング指定 解答
.gnav a {
  background-color: #E11B1E;
  color: #ffffff;
  width: 130px;
  height: 30px;
  font-size: 22px;
  font-weight: 400;
  text-decoration: none;
  border-radius: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
}
【STEP6】a要素(リンクテキスト)のスタイリング指定 CSS
■ a要素(リンクテキスト)のマウスホバー時のスタイリング指定 解答
.gnav a:hover {
  background-color: #ffffff;
  color: #E11B1E;
  border: 2px solid #E11B1E;
}
【STEP6】a要素(リンクテキスト)のマウスホバー時のスタイリング指定 CSS
【STEP6】a要素(リンクテキスト)のスタイリング指定をしよう 解説
  • nav要素の子孫要素であるa要素を子孫セレクタを使って指定し、CSSを記述します。
  • a要素はインライン要素であるため、デフォルトではwidth、heightの設定ができませんが、display:flex;を指定することにより、ブロックボックスのFlexコンテナに変わるため、幅・高さを設定することができます。
    • display:block;の指定は必要ありません。
  • マウスホバー時のスタイリング設定は、擬似クラス:hoverを使い設定します。
※擬似クラスは「HTML/CSS入門編 5章 CSSの基本を学ぼう」参照
※子孫セレクタは「HTML/CSS入門編 6章 よく使うセレクタを学ぼう」参照
※Flexboxは「HTML/CSS入門編 10章 Flexboxを学ぼう」参照
【画面収録】a要素(リンクテキスト)の初期表示のスタイリング指定
【画面収録】a要素(リンクテキスト)のマウスホバー時のスタイリング指定

【STEP7】メインビジュアルをスタイリングしよう

  • メインビジュアル部分を作成します。
  • 下記のHTMLのマークアップ部分にCSSを適用します。
<div>
  <img src="images/mainvisual.png" alt="">
</div>
HTML
  • 以下の設定でメインビジュアルのimg要素にCSSプロパティを指定してください。
    • imgタグにclass名をつけclassセレクタでCSSを記述してください。
    • imgタグにつけるclass名はmainvisualとしてください。
■ メインビジュアルのCSS指定
プロパティ
マージン
中央配置 上マージン:0 下マージン:100px
角丸の指定
100%
ブラウザプレビュー(メインビジュアルのスタイリング)
 (19603)

コードの入力が終わりましたら、以下の解答を確認して答え合わせをしましょう。

【STEP7】の解答

<div>
  <img src="images/mainvisual.png" alt="" class="mainvisual">
</div>
【STEP7】メインビジュアルのスタイリング指定 HTML
.mainvisual {
  margin: 0 auto 100px;
  border-radius: 100%;
}
【STEP7】メインビジュアルのスタイリング指定 CSS
【STEP7】の解説
  • marginの値を3つ記述するショートハンドを使い、margin:上 左右 下;と一括指定しています。
  • img要素はインライン要素ですので、通常marginによる中央配置はできませんが、reset.cssにimg{display: block;}が記述されているため、ブロックボックスに変換されており、マージンによる中央配置が可能です。
  • border-radius:100%;を指定すると、要素はできる限り丸くなろうとします。
    • mainvisual.pngのサイズは800×800pxの正方形ですので、完全な正円になります。※50%と指定しても正円になります。
※classセレクタは「HTML/CSS入門編 6章 よく使うセレクタを学ぼう」参照
※margin、ブロックボックス、border-radiusは「HTML/CSS入門編 8章 ボックスモデルを学ぼう」参照
【画面収録】メインビジュアルのスタイリング

【STEP8】メインコンテンツをスタイリングしよう

  • メインコンテンツ部分のスタイリングを行います。
  • 下記のHTMLのマークアップ部分にCSSを適用します。
<main>
  <h2>ごあいさつ</h2>
  <p>
    このサイトでは、我が家に生息する3匹の金魚たちを紹介します!<br />
    全員が飼い主(私)の顔をよく覚えており、私の姿を見つけるとすぐに近寄って来ます!
  </p>
</main>
HTML
  • メインコンテンツはmain要素h2要素p要素から成り立っています。
  • 各要素を以下の設定でスタイリングしてください。
    • その際、まずmainタグにclass名をつけ、classセレクタでCSSを記述します。h2、p要素は子孫セレクタを使いスタイリングしてください。
    • mainタグのclass名はmain-contentsとしてください。
■ main要素のCSS指定
プロパティ
背景色
#C2ECFF(水色)
85%(ブラウザ幅に応じて可変)
マージン
中央配置 上マージン:0 下マージン:85px
パディング
上下:50px 左右:100px
角丸の指定
50px
ボックスの影
横:0 縦:0 ぼかし幅:15px 色:#cccccc(グレー)
■ h2要素のCSS指定
プロパティ
文字色
#111111(濃いグレー)
行揃え
中央揃え
文字サイズ
35px
文字の太さ
400
枠線
下ボーダー 太さ:2px 種類:実線 色:#EDF9FF(薄水色)
パディング
下パディング:24px
マージン
下マージン:24px
■ p要素のCSS指定
プロパティ
文字色
#111111(濃いグレー)
文字サイズ
20px
文字の太さ
400
行間
200%
ブラウザプレビュー(メインコンテンツのスタイリング)
 (19627)

コードの入力が終わりましたら、以下の解答を確認して答え合わせをしましょう。

【STEP8】の解答

<main class="main-contents">
  <h2>ごあいさつ</h2>
  <p>
    このサイトでは、我が家に生息する3匹の金魚たちを紹介します!<br />
    全員が飼い主(私)の顔をよく覚えており、私の姿を見つけるとすぐに近寄って来ます!
  </p>
</main>
【STEP8】メインコンテンツのスタイリング指定 HTML
.main-contents {
  background-color: #c2ecff;
  width: 85%;
  margin: 0 auto 85px;
  padding: 50px 100px;
  border-radius: 50px;
  box-shadow: 0 0 15px #cccccc;
}

.main-contents h2 {
  color: #111111;
  text-align: center;
  font-size: 35px;
  font-weight: 400;
  border-bottom: 2px solid #edf9ff;
  padding-bottom: 24px;
  margin-bottom: 24px;
}

.main-contents p {
  color: #111111;
  font-size: 20px;
  font-weight: 400;
  line-height: 200%;
}
【STEP8】メインコンテンツのスタイリング指定 CSS
【STEP8】の解説
  • main要素の幅は、ブラウザ幅に応じて可変する設定にします。
    • width:85%;と指定することにより、親要素であるbody要素(幅を指定していないのでデフォルトの100%→つまりブラウザ幅と同じ)に対して常時85%の幅で可変します。
    • マージンで中央配置にしつつ、下マージンもショートハンドで指定します。
    • paddingでボックスの内側の余白を設定します。
      • reset.css内に*(ユニバーサルセレクタ)box-sizing: border-box; が指定されているので、widthにpaddingが含まれるブラウザ解釈 になります。
  • h2要素はmainタグのclass名を使い、子孫セレクタで指定します。
    • 下ボーダーを境に、padding-bottomとmargin-bottomで上下に余白を指定します。
  • p要素も mainタグのclass名を使い、子孫セレクタで指定します。
    • 行間(line-height)の値は200%と指定しましたが、2または2emでも結果は同じ表示になります。
※行揃えほかのテキスト関連のプロパティは「HTML/CSS入門編 5章 CSSの基本を学ぼう」参照
※classセレクタと子孫セレクタは「HTML/CSS入門編 6章 よく使うセレクタを学ぼう」参照
※margin、padding、border-radiusは「HTML/CSS入門編 8章 ボックスモデルを学ぼう」参照
【画面収録】main要素のCSS指定
【画面収録】h2要素のCSS指定
【画面収録】p要素のCSS指定

【STEP9】ページ内リンクテキストをスタイリングしよう

  • メインコンテンツとフッターの間にあるページ内リンクテキスト「▲ページトップへ」をスタイリングします。
  • 下記のHTMLのマークアップ部分にCSSを適用します。
<p>
  <a href="#pagetop">▲ページトップへ</a>
</p>
HTML
  • 以下の手順でまずは、リンクテキストを右揃えにしましょう。
リンクテキストを右揃えにする
  1. pタグにclass名をつけます。 class名はpagetopとしてください。
  2. classセレクタを使い、p要素水平方向右揃えの指定をします。
  3. 右マージン60px指定します。
  • 次に、子孫セレクタを使い、a要素にスタイリング指定をします。
■ a要素を装飾する
プロパティ
文字色
#E11B1E(赤)
文字サイズ
20px
文字の太さ
400
文字の装飾
下線なし
  • a要素にマウスホバーしたときのスタイル指定は以下の通りです。
■ a要素にマウスホバーしたときのCSS指定
プロパティ
文字の装飾
下線(アンダーライン)を表示する
ブラウザプレビュー(初期表示)
 (19658)

ブラウザプレビュー(マウスホバー時)
 (19660)

コードの入力が終わりましたら、以下の解答を確認して答え合わせをしましょう。

【STEP9】の解答

<p class="pagetop">
  <a href="#pagetop">▲ページトップへ</a>
</p>
【STEP9】ページ内リンクテキストのスタイリング指定 HTML
■ リンクテキストを右揃えにする 解答1(text-align)
.pagetop {
  text-align: right;
  margin-right: 60px;
}
【STEP9】リンクテキストを右揃えにする 解答1
■ リンクテキストを右揃えにする 解答2(Flexbox)
.pagetop {
  display: flex;
  justify-content: flex-end;
  margin-right: 60px;
}
【STEP9】リンクテキストを右揃えにする 解答2
■ a要素を装飾する
.pagetop a {
  color: #E11B1E;
  font-size: 20px;
  font-weight: 400;
  text-decoration: none;
}

.pagetop a:hover {
  text-decoration: underline;
}
【STEP9】a要素を装飾する
【STEP9】の解説
  • aタグでマークアップされた1行のリンクテキストを右揃えにする方法には、次の2つがあります。
a要素を右揃えにする方法
解答1. a要素の親要素(ブロック要素)に対してtext-align:right;を指定する。
解答2. a要素の親要素(ブロック要素)のFlexboxを有効化し、justify-content: flex-end;を指定する。
  • 解答1の方法の場合、a要素に対してtext-align:right;を指定しても右揃えにはなりません。a要素は幅(width)を持たないため、見た目は左揃えです。
  • 今回の場合は、親要素であるpタグ(ブロックボックスであるため、ブラウザ幅いっぱいの幅を持ちます)に対してtext-align:right;を指定することにより、子要素であるa要素が右揃えになります。
  • 解答2の方法の場合は、p要素にdisplay:flex;を指定してFlexコンテナ化、子要素であるa要素をFlexアイテム化し、justify-content: flex-end;で右揃えにします。
  • どちらの方法でも結果的に見た目は同じになりますが、解答1の方法はコード2行で済みますので、今回は解答1の方法を採用します。
※行揃えほかのテキスト関連のプロパティは「HTML/CSS入門編 5章 CSSの基本を学ぼう」参照
※classセレクタと子孫セレクタは「HTML/CSS入門編 6章 よく使うセレクタを学ぼう」参照
※ブロック要素、ブロックボックスについては「HTML/CSS入門編 8章 ボックスモデルを学ぼう」参照
※Flexboxは「HTML/CSS入門編 10章 Flexboxを学ぼう」を参照
【画面収録】リンクテキストを右揃えにする
【画面収録】a要素を装飾する

【STEP10】フッターをスタイリングしよう

  • フッターのスタイリングをします。
  • 下記のHTMLのマークアップ部分にCSSを適用します。
<footer>
  <p>Copyright &copy; uchikin All Rights Reserved.</p>
</footer>
HTML
  • footer要素とp要素に以下のCSSを適用してください。
■ footer要素
プロパティ
高さ
160px
Flexbox
有効
子要素の水平方向の揃え
中央
子要素の垂直方向の揃え
中央
■ p要素(子孫セレクタで指定)
プロパティ
文字の色
#ffffff(白)
文字サイズ
16px
文字の太さ
400
■ ブラウザプレビュー
 (19692)

コードの入力が終わりましたら、以下の解答を確認して答え合わせをしましょう。

【STEP10】の解答

<footer>
  <p>Copyright &copy; uchikin All Rights Reserved.</p>
</footer>
【STEP10】フッターのスタイリング指定 HTML
footer {
  height: 160px;
  display: flex;
  justify-content: center;
  align-items: center;
}

footer p {
  color: #ffffff;
  font-size: 16px;
  font-weight: 400;
}
【STEP10】フッターのスタイリング指定 CSS
【STEP10】の解説
  • footer要素には高さ(height)を160px指定して、ある程度の高さを持たせた上で、Flexboxを使い、著作権表記(copyright)を縦位置・横位置ともに中央揃えにすることにより、レイアウトのバランスを整えています。
    • justify-content : center ;...横位置中央揃え
    • align-items : center ;...縦位置中央揃え
  • footer要素はブロックボックスですので、幅(width)をわざわざ100%と指定しなくても、自動的にブラウザ幅いっぱいになります。
  • 右のブラウザプレビューのように、footer要素に仮の背景色を入れてみると、レイアウト指定がどのように適用されているかを確認しやすくなります。
    • このように、レイアウトを確認するために一時的に指定する背景色のことをダミー背景色と呼びます。
※行揃えほかのテキスト関連のプロパティは「HTML/CSS入門編 5章 CSSの基本を学ぼう」参照
※子孫セレクタは「HTML/CSS入門編 6章 よく使うセレクタを学ぼう」参照
※ブロック要素、ブロックボックスについては「HTML/CSS入門編 8章 ボックスモデルを学ぼう」参照
※Flexboxは「HTML/CSS入門編 10章 Flexboxを学ぼう」を参照
■ footer要素のスタイリング
■ p要素のスタイリング
■ footer要素に背景色(緑)を指定した場合のブラウザプレビュー
 (19706)

ここまででindex.html(トップページ)が完成しました。
続いて、下層ページのコーディングを行いましょう。

【STEP11】下層ページを作成しよう

  • 以下の各ページの完成イメージを見ればわかるとおり、トップページと下層ページには共通部分が多くあります。
  • 具体的には、ロゴとナビゲーションを含むヘッダー領域と、メインコンテンツ(テキストの内容は異なる)ページトップリンクフッター全ページ共通の要素です。
    • トップページと下層ページの異なる点は、メインビジュアルが下層ページにはなく、その代わりにページタイトルの見出しと金魚のプロフィール写真がヘッダーとメインコンテンツの間に追加されます。
    • 下層ページのレイアウトフォーマットは3ページとも共通ですので、1ページできれば、あとは複製してプロフィール写真とテキストの差し替えのみで作成することができます。
  • このような場合、index.htmlの複製を元に下層ページをコーディングすれば、効率よくページを量産していくことができます。
index.html
 (19717)

ume.html
 (19719)

taro.html
 (19721)

hime.html
 (19723)

それでは、以下の指示に従い、まずは「ウメちゃん」ページを作成してください。

「ウメちゃん」ページ(ume.html)をコーディングしよう

  • 以下は下層ページ(「ウメちゃん」ページ)を作成する手順です。
  • 右図「下層ページのHTML構造図」のように、情報構造を下層ページに適したものに変更します。
下層ページの作成手順
  1. index.htmlを「ファイル」メニューから「名前をつけて保存…」で、ume.htmlとして同階層に複製する。
  2. titleタグのテキストを書き換える。
  3. 情報構造の見直しを行う。
    1. 不要なHTML要素があれば削除する。
    2. そのページに固有のHTML要素を追加する。
  4. 追加したHTML要素をCSSでスタイリングする。
■ 下層ページのHTML構造図
 (19731)

1. index.htmlを「名前をつけて保存」する
  • index.htmlを「ファイル」メニューから「名前をつけて保存…」で、ume.htmlとして同階層に複製します。
  • index.htmlは閉じられ、ume.htmlがエディターで開かれます。
【画面収録】index.htmlを「名前をつけて保存」する
2. titleタグのテキストを書き換える
  • titleタグのテキストはそのページ固有のタイトルに書き換えます。
  • 以下のタイトルに差し替えてください。
<title>ウメちゃん | うちの金魚たち</title>
title
【画面収録】 titleタグのテキストを書き換える
3. 情報構造の見直しを行う
  • トップページにあるもので下層ページで不要なものはメインビジュアル(mainvisual.png)です。
  • 下層ページで新たに追加される要素は、ページタイトルの見出しと金魚のプロフィール写真です。
下層ページの情報構造を検討し、以下のように変更します。
■ index.htmlからの変更点
  • タイトルロゴ画像のimgタグを囲んでいるh1タグを下層ページではdivタグに変更する。
  • mainvisual.pngをphoto-ume.jpgに差し替え、imgタグのclass名を別の名前に変える。
  • メインコンテンツの見出しと段落テキストを差し替える。
    • 各ページの原稿は、うちの金魚たちテキスト.txtからコピー&ペーストしてください。
見出し構造を変更する理由
  • h1タグはそのページの主要タイトルをマークアップすべきタグであるため。
  • トップページではサイトのタイトルロゴ画像(alt属性の値がサイトタイトルである「うちの金魚たち」)がh1でマークアップされているのは適切ですが、下層ページでは、そのページ固有のタイトルである「ウメちゃん」「タロちゃん」「ヒメちゃん」をh1タグでマークアップする方が適切です。
  • タイトルロゴ画像が下層ページでh1でマークアップされたままだと、下層ページに2つのh1要素が存在してしまうため、divタグに変更します。見た目は変わりません。
  • 結果的に、トップページは「サイト全体のタイトル」が h1、下層ページは「ページごとのタイトル」が h1になり、論理的に一貫したHTML構造になります。
■ ume.html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>ウメちゃん | うちの金魚たち</title>
    <link rel="stylesheet" href="css/reset.css">
    <link rel="stylesheet" href="css/style.css">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Kaisei+Opti&display=swap" rel="stylesheet">
  </head>

  <body>
    <a id="pagetop"></a>
    <header>
      <div>
        <a href="index.html">
          <img src="images/site-logo.svg" alt="うちの金魚たち" class="title-logo">
        </a>
      </div>

      <nav class="gnav">
        <ul>
          <li><a href="ume.html">ウメちゃん</a></li>
          <li><a href="taro.html">タロちゃん</a></li>
          <li><a href="hime.html">ヒメちゃん</a></li>
        </ul>
      </nav>
    </header>

    <h1>ウメちゃん</h1>

    <div>
      <img src="images/photo-ume.jpg" alt="ウメちゃんの写真">
    </div>

    <main class="main-contents">
      <h2>ウメちゃんの紹介</h2>
      <p>
        あたまに梅干しのような模様があることからウメちゃんと名づけられました。
        昼間は水槽内の中層をつねに行ったり来たり、見まわりを続けています。
      </p>
    </main>

    <p class="pagetop">
      <a href="#pagetop">▲ページトップへ</a>
    </p>

    <footer>
      <p>Copyright &copy; uchikin All Rights Reserved.</p>
    </footer>
  </body>
</html>
■ ume.html
【画面収録】 タイトルロゴをdivタグでマークアップする
【画面収録】 ページタイトルの見出し(h1)とプロフィール写真(img)を追加する
【画面収録】 メインコンテンツの見出しと段落テキストを差し替える
ブラウザプレビュー
 (19763)

4. 追加したHTML要素をCSSでスタイリングする
  • 新たに追加したh1要素とimg要素にCSSを適用します。
  • 次のようにclass属性を追加してください。
要素名
class名
h1
page-title
img
profile-photo
■ ume.html
<h1 class="page-title">ウメちゃん</h1>

<div>
  <img src="images/photo-ume.jpg" alt="ウメちゃんの写真" class="profile-photo">
</div>
■ ume.html
それぞれの要素に以下のスタイリング指定を行なってください。
■ h1要素(classセレクタで指定)
プロパティ
文字色
#E11B1E(赤)
水平方向の行揃え
中央
文字サイズ
40px
文字の太さ
400
下マージン
60px
■ img要素(classセレクタで指定)
プロパティ
角丸の指定
30px
マージン
中央配置 上マージン:0 下マージン:100px
■ ブラウザプレビュー 「ウメちゃん」ページ完成
 (19780)

コードの入力が終わりましたら、以下の解答を確認して答え合わせをしましょう。

【STEP11】の解答

<h1 class="page-title">ウメちゃん</h1>

<div>
  <img src="images/photo-ume.jpg" alt="ウメちゃんの写真" class="profile-photo">
</div>
【STEP11】下層ページのスタイリング指定 HTML
/* 下層ページ共通 */

.page-title {
  color: #e11b1e;
  text-align: center;
  font-size: 40px;
  font-weight: 400;
  margin-bottom: 60px;
}

.profile-photo {
  border-radius: 30px;
  margin: 0 auto 100px;
}
【STEP11】下層ページのスタイリング指定 CSS
【STEP11】の解説
  • index.htmlを複製してume.htmlを作成しましたが、CSSファイルまで複製はされていません。
  • index.htmlと関連付けされているreset.cssとstyle.cssは、ume.htmlとも関連付けされており、これまでに記述したCSSに下層ページのCSSも追加記述していきます。
    • 新しくCSSファイルを作成する必要はありません。
    • /* 下層ページ共通 */ のようにコメントを追加してから下層ページ用のCSSを記述すると、後から修正する際にコードを見つけやすくなります。
  • img要素はインライン要素ですので、通常marginによる中央配置はできませんが、reset.cssにimg{display: block;}が記述されているため、ブロックボックスに変換されており、マージンによる中央配置が可能です。
※行揃えほかのテキスト関連のプロパティは「HTML/CSS入門編 5章 CSSの基本を学ぼう」参照
※classセレクタは「HTML/CSS入門編 6章 よく使うセレクタを学ぼう」参照
※margin、ブロックボックス、border-radiusは「HTML/CSS入門編 8章 ボックスモデルを学ぼう」参照
【画面収録】h1要素とimg要素にCSSを適用する
これで「ウメちゃん」ページ(ume.html)が完成しました。
続くSTEP12では、このページを元に他の下層ページ(「タロちゃん」ページと「ヒメちゃん」ページ)も作成していきます。

【STEP12】他の下層ページも作成しよう

  • 合計3ページある下層ページの情報構造とレイアウトフォーマットや装飾は全て同じです。
  • 【STEP11】で完成したume.htmlを複製して、taro.htmlとhime.htmlを作成していきます。
  • 以下の手順に従い、残りの2ページを作成してください。
他の下層ページの作成手順
  1. 完成したume.htmlを「名前をつけて保存」し、taro.htmlとファイル名をつけて保存する。
  2. titleタグのテキストを差し替える。
  3. プロフィール写真を差し替える。
  4. h1、pタグのテキストを差し替える。
  5. 完成したtaro.htmlを「名前をつけて保存」し、hime.htmlとファイル名をつけて保存する。
  6. titleタグのテキストを差し替える。
  7. プロフィール写真を差し替える。
  8. h1、pタグのテキストを差し替える。
  9. ブラウザプレビューを行い、表示の崩れやリンク切れなどの不具合がないかをチェックする。
■ ブラウザプレビュー 「タロちゃん」ページ完成
 (19799)

ブラウザプレビュー 「ヒメちゃん」ページ完成
 (19802)

ページの作成が終わりましたら、以下の解答を確認して答え合わせをしましょう。

【STEP12】の解答

「タロちゃん」ページの作成
taro.html
<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="UTF-8">
  <title>タロちゃん | うちの金魚たち</title>
  <link rel="stylesheet" href="css/reset.css">
  <link rel="stylesheet" href="css/style.css">
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Kaisei+Opti&display=swap" rel="stylesheet">
</head>

<body>
  <a id="pagetop"></a>
  <header>
    <div>
      <a href="index.html">
        <img src="images/site-logo.svg" alt="うちの金魚たち" class="title-logo">
      </a>
    </div>

    <nav class="gnav">
      <ul>
        <li><a href="ume.html">ウメちゃん</a></li>
        <li><a href="taro.html">タロちゃん</a></li>
        <li><a href="hime.html">ヒメちゃん</a></li>
      </ul>
    </nav>
  </header>

  <h1 class="page-title">タロちゃん</h1>

  <div>
    <img src="images/photo-taro.png" alt="タロちゃんの写真" class="profile-photo">
  </div>

  <main class="main-contents">
    <h2>タロちゃんの紹介</h2>
    <p>
      奇抜な髪型をした人のようなタロちゃんはめんどくさがりで、お食事タイムのときしか泳ぐことをしません。普段は水底でお休みしています。
    </p>
  </main>

  <p class="pagetop">
    <a href="#pagetop">▲ページトップへ</a>
  </p>

  <footer>
    <p>Copyright &copy; uchikin All Rights Reserved.</p>
  </footer>

</body>

</html>
【STEP12】「タロちゃん」ページの作成
【画面収録】「タロちゃん」ページの作成
【STEP12】の解説
  • 同じHTMLの情報構造を持ち、レイアウトや装飾などのCSS指定も同じページを量産する方法は非常に簡単です。
  • 完成したページを「名前をつけて保存」で複製し、テキストや画像を差し替えるだけです。
  • HTMLファイルの保存先を間違えないように注意しましょう。
    • 今回作成した合計4ページのHTMLファイルは、すべて同階層に保存しました。
    • Webサイトが完成したら、リンク切れ(リンク先にページが存在しない状況。保存ミスやファイルパスの記述ミスで起こる)がないかを必ず確認しましょう。
「ヒメちゃん」ページの作成
hime.html
<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="UTF-8">
  <title>ヒメちゃん | うちの金魚たち</title>
  <link rel="stylesheet" href="css/reset.css">
  <link rel="stylesheet" href="css/style.css">
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Kaisei+Opti&display=swap" rel="stylesheet">
</head>

<body>
  <a id="pagetop"></a>
  <header>
    <div>
      <a href="index.html">
        <img src="images/site-logo.svg" alt="うちの金魚たち" class="title-logo">
      </a>
    </div>

    <nav class="gnav">
      <ul>
        <li><a href="ume.html">ウメちゃん</a></li>
        <li><a href="taro.html">タロちゃん</a></li>
        <li><a href="hime.html">ヒメちゃん</a></li>
      </ul>
    </nav>
  </header>

  <h1 class="page-title">ヒメちゃん</h1>

  <div>
    <img src="images/photo-hime.png" alt="ヒメちゃんの写真" class="profile-photo">
  </div>

  <main class="main-contents">
    <h2>ヒメちゃんの紹介</h2>
    <p>
      紅白の更紗模様が美しいヒメちゃんはオランダシシガシラという品種の金魚です。
      乾燥させたイトミミズをなによりも好んで召し上がります。
    </p>
  </main>

  <p class="pagetop">
    <a href="#pagetop">▲ページトップへ</a>
  </p>

  <footer>
    <p>Copyright &copy; uchikin All Rights Reserved.</p>
  </footer>

</body>

</html>
【STEP12】「ヒメちゃん」ページの作成
【画面収録】「ヒメちゃん」ページの作成
これで「HTML/CSS入門編 コーディング実践演習2」の解説を終わります。
WEBCOACH | キャリアチェンジまでの全てを学ぶマンツーマンWEBスクール
© 2020 by WEBCOACH