総合実習:LPを作ってみよう【図解たっぷりBootstrap5入門】

吉田先生

今までに学習したBootstrap5の使い方を復習しながら、1つのランディングページ(LP)を作ってみましょう。

完成後に『Bootstrap5のレイアウト方法をマスターしよう』で作ったページと見比べてみると、コーディングのレベルアップが感じられますよ。

完成図と制作準備

完成見本

このレッスンでは、Bootstrap5を使用して下図のようなLP(ランディングページ)を制作します。

制作準備

  • 使用素材(kadai-images.zip )をDLし、画像をimagesフォルダに移動
  • 新しくHTMLファイル「lp.html」を作成
  • lp.htmlにBootstrap5のCDNコードを貼り付ける
  • lp.htmlにBootstrapアイコンのCDNコードを貼り付ける
  • オリジナルのCSSを記述できるよう「lp.css」を作る
  • htmlファイルから、作成したオリジナルCSSファイル(lp.css)を読み込む

なお、htmlやcssファイル名はお好きに設定して頂いも構いません。

1. ファーストビュー

1-1. ヘッダーナビゲーション

ページ最上部に、下図のようなヘッダーナビゲーションを作成します。

※メニューとフォーム部分の間隔などは、表示する画面幅により異なります。

コーディング順序

  1. Navber-Bootstrapからナビゲーションのコードをコピーし、htmlファイルに張り付ける。
  2. navタグに data-bs-theme="dark" を加え、黒ベースの配色にする。
  3. <a class="navbar-brand"> のテキストを「LP」に変更する。
  4. 変更した「LP」の文字を、h1タグで囲う。
  5. メニューの項目を、上図のように打ち替える。
  6. 右側、inputタグのフォーム内に「メールアドレス」の文字を表示させる。
  7. 右端のボタン文字を「会員登録」に変更する。
  8. 会員登録のボタンタグにtext-nowrap クラスを追加。

1-2. カルーセルで画像を表示

ナビゲーションの下には、カルーセルを使って画像3枚をスライド表示します。
インジケーターとキャプション、両方つけます。

まずは、大まかに設定していきましょう。

コーディング順序

  1. Carouselページ内、“キャプション”にあるテンプレートコードをコピー・アンド・ペースト。
  2. スライド表示する画像のパスを入力します。
    素材使用される場合は、hero1~ hero3.jpg までの3枚です。
  3. キャプションを囲う要素(div.carousel-caption)それぞれにtext-dark-emphasisクラスを追加。文字色を濃灰色にする。
  4. キャプションの見出しタグを、それぞれ h5 から h2に変更。

キャプションの可読性を上げるため、さらにBootstrapのクラスを追加します。

コーディング順序

  1. キャプションの見出しにdisplay-3クラスを追加。
  2. その下のpタグにleadクラスを追加。
  3. カルーセルのimgタグにopacity-75クラスを追加。

使用したopacity-75クラスは、CSSのopacityプロパティ(不透明度)を設定できるユーティリティです。
ドキュメントではBackground(背景)のページで解説されています。

Bootstrap公式ドキュメント / 背景
https://getbootstrap.jp/docs/5.3/utilities/background/

1-3. カルーセル下テキスト

作成したカルーセルの下に、下図のようなテキスト部分を作ります。
ここは横に広がりすぎないよう、全体をBootstrapのcontainerクラスを指定した要素で囲います。

テキスト部分の作成

まず、見出しと文章が書かれている部分を作ります。

コーディング順序

  1. divタグを新しく書き、containerクラスとmt-5クラスを指定する。
  2. 作成したdivの子要素として、h2タグとpタグを書く
  3. h2、pタグの中にそれぞれテキストを入れる(SAMPLE TEXTなどでOK)。
  4. divタグにtext-centerクラスを追加。文字を中央配置にする。
  5. h2タグにpy-3クラスを指定し、文章との間隔を作る。

3つのアイコンを追加

追加したpタグの下で、アイコンを3つ並べます。
表示するアイコンは、Bootstrapアイコンからお好きなものを選んで使ってください。

コーディング順序

  1. </p> と </div> との間に、新しくdivタグを1つ追加。
  2. 作成したdivタグの中にアイコンを3つ、それぞれiタグで追加。
  3. iタグにdisplay-5クラスを指定し、アイコンを大きくする。
  4. divタグにd-flexクラスとjustify-content-aroundクラスを指定。アイコンの配置を整える。
  5. divタグにmt-5クラスを追加。上の文字との間隔を作る。

1-4. ボタンを追加

ナビゲーション、カルーセル内(キャプション下部 × 3 )にボタンを追加します。

カルーセル内のボタンは、btn-lgクラスを使って大きくします。
ボタン色のクラス名はButtonsで調べて下さい。

コーディング順序

【ナビゲーション】

  1. メールアドレスと会員登録の間に、ボタンのテンプレートコードを貼り付ける。
  2. ボタンの文字を「予約する」に打ち替える
  3. ボタンタグにtext-nowrap me-2クラスを追加する。

【カルーセル内】

  1. div.carousel-caption 内、</p> の後にボタンのテンプレートコードを貼り付ける。
  2. ボタンのテキストを「Large button」にする
  3. ボタンタグにbtn-lg mb-4クラスを追加。
  4. 残り2つの div.carousel-caption 内にもボタンのコードを貼り付ける

1-5.アラートを追加する

ヘッダーナビゲーションの下に、アラートを追加してみましょう。
アラートリンクも使います。

コーディング順序

  1. BootstrapドキュメントAlertsのページにある、「アラートを閉じる」のテンプレートコードをコピー。
  2. htmlファイルの、ナビゲーションとカルーセルの間に貼り付ける。
  3. 完成画像と同じ色になるよう、配色のクラスを変更する。
  4. アラート全体を囲うdivにmb-0クラスを追加し、カルーセルとの隙間を無くす。
  5. strongタグの中身を「ログアウトしました」に変更する。
  6. 上記タグの後に「会員サービスを利用する場合はログインしてください 」と入力。
  7. strongタグにme-5クラスを追加し、間をあける。
  8. テキストの「ログイン」部分をalert-linkクラスを指定したaタグで囲う。

2. カードエリアの追加

テキスト部分の下に4枚のカードを並べたエリアを作ります。

2-1. カードレイアウトを作る

まず、カードを4枚横に並べるレイアウトを作ります。
テンプレートコードはBootstrap5.3ドキュメントのCardページ、グリッドカードのものを使います。

URL:https://getbootstrap.jp/docs/5.3/components/card/

コーディング順序

  1. 1で作ったテキスト部分の下に、divタグを新たに作成する。
  2. 作ったdivタグにcontainer mt-5py-5クラスを指定。
  3. “グリッドカード”のテンプレートコードをコピーし、div.container内に貼り付け。
  4. rowクラスが指定されているdivタグに、row-cols-xxl-4クラスを追加する。

上図のように、表示幅が広い時は4つ横並びにカードが配置されている状態にして下さい。

2-2. カードの中身を作る

カードの中身を作っていきます。
カード1つを完成させてから、残り3つ分にコピー・アンド・ペーストしてもOKです。

コーディング順序

  1. imgタグの画像パスを変更し、素材のcard.jpgを表示させる。
  2. カードタイトルのh5タグをh3に変更し、h5クラスを追加する。
  3. <p class="card-text">の下にdivタグを追加。
  4. 追加したdivタグに、text-endクラスを指定する。
  5. divタグの中にaタグを作成する。リンク先は空( href="#" )でOK。
  6. aタグにicon-link icon-link-hover align-items-baselineクラスを指定。
  7. aタグの中に「詳しくはこちら」と、右矢印アイコンを挿入する。

ここまでのコーディングで、各カード部分のコードは以下のようになります。

<div class="card">
    <img src="images/card.jpg" class="card-img-top" alt="...">
    <div class="card-body">
        <h3 class="card-title h5">Card title</h3>
        <p class="card-text">
            This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.
        </p>
        <div class="text-end">
            <a class="icon-link icon-link-hover align-items-baseline" href="#">
                詳しくはこちら
                <i class="bi bi-arrow-right"></i>
            </a>
        </div>
    </div>
</div>

3. 2カラム+モーダル

3枚並べたカード部分の下に2カラム部分を作成し、モーダルボタンを設置します。

4-1. 2カラム部分を作る

まず、2カラム部分を作りましょう。
グリッドシステムを使用して、画像とテキストの2カラムを作ります。

コーディング順序

  1. divを作成し、container mt-5 クラスを指定。
  2. divタグの中に、row クラスを指定したdivを作成。
  3. rowクラスを持つdivの中に、col-md-6クラスを指定したdivを2つ追加。
  4. 1つめの div.col-md-6 の中に画像(01.jpg)を表示させる。
    imgタグにはimg-fluidクラスを指定する。
  5. 上記imgタグに、オリジナルのcssクラスimg-coverを加える
  6. img-coverクラスに対してcssファイルで下記のように指定する。
.img-cover{
  height: 300px;
  width: 100%;
  object-fit: cover;
}
/* 
これは画像がdiv.col-md-6 よりも小さい場合に、拡大して表示する設定です。
縦横のサイズを指定して「object-fit: cover;」と指定することで、
指定サイズ範囲内に画像が収まるよう調整されます。
*/

2つ目のdiv.col-md-6には、見出しと段落をいれます。
それぞれ、文字は適当に打ってしまって良いので、サクッと作りましょう。

<div class="col-md-6">
    <h2>SAMPLE TEXT</h2>
    <p>
        SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT SAMPLE TEXT
    </p>
    <!--  ★ここにモーダルを設置します -->
</div>

rowとcolについて

ここではflexの子要素に対してcol-md-6クラスを指定しました。

上のカードエリアと同じ様に、子要素の方はcolクラスのみ、rowクラスが指定されている要素にrow-cols-md-2クラスを指定しても構いません。お好きな方法で設定してみて下さい。

4-2. モーダルを設置する

予約フォームに進むための注意事項を表示するモーダルを設置します。
2カラム右側にボタンがあり、押下すると以下のようなモーダルが表示されるようにします。

コーディング順序

  1. Modalのページから「ライブデモ」のテンプレートコードをコピー。
  2. 2つ目の div.col-md-6 、pタグの下にコードを貼り付ける。
  3. モーダルを表示させるボタンの色を変更し、px-3クラスを追加する。
  4. モーダルを表示するためのボタン、モーダル本体内のテキストを打ち替える。
  5. モーダルフッターの2つめ、「予約に進む」ボタンの色を変更する。

5.画像エリアとシングルカラム

5-1. 画像エリア

画像を3枚横に並べて表示させます。
imgタグには以下2つのクラスを追加し、どの幅でもピッタリと画像が表示されるようにしましょう。

  • Bootstrapのimg-fluidクラス:画像が大きくてもはみ出ない
  • 自作したimg-coverクラス:画像が小さい、縦横比が違う場合も、同じ大きさに揃える

コーディング順序

  1. containermt-5クラスを適用したdivを作成。
  2. その中に、rowクラスをつけたdivを作成。
  3. rowクラスのdivの中に、col-md-4クラスのdivを3つ作成する。
  4. 作った各div内に画像を表示させる。
    imgタグにはimg-fluidimg-coverクラスを追加。

5-2. シングルカラム

続いてシングルカラムエリアです。
LPですので、「予約」という成果を得られるように、大きめのボタンを中央に入れましょう。

また、全幅で背景画像を入れて、文字やボタンを画像の上にのせます。

①大まかにHTMLを書く

コーディング順序

  1. divタグを作成し、mt-5クラスを適用する。
  2. 上記divの中に、もう一つdivタグを追加。
    d-flex flex-column justify-content-centerと、3つのクラスを指定する。
  3. その中にdisplay-4クラスを指定したh2タグを追加。
    中にはSample Textなど適当な文言を入れる。
  4. h2タグの下にpタグ追加。中にはsample textなどを何度か書いて長めの文にする。
  5. pタグの下に、空のdivタグを追加。
  6. そのdivタグの中に、bootstrapのボタンを設置する。
    ボタンの文字は「予約する」に変更し、クラスを変えて見本と同じ配色にする。

この時点では、まだ下図のようにテキストとボタンが表示されるだけです。

<div class="mt-5">
    <div class="d-flex flex-column justify-content-center">
        <h2 class="display-4">Sample Text</h2>
        <p>
            sample text sample text sample text sample text sample text sample text sample text sample text sample text sample text sample text sample text sample text
        </p>
        <div>
            <button type="button" class="btn btn-success">予約する</button>
        </div>
    </div>
</div>

なお、ボタンを<div>タグで囲うのは、flexレイアウトの影響でボタンが引き伸ばされるのを防ぐためです。
ボタンタグだけですと、下図のように幅いっぱいにボタンが伸びてしまいます。

②背景画像を表示する

背景画像を表示させましょう。
ここは、オリジナルのCSSファイル(lp.css)を使って自分で書きます。

背景画像を表示させたい要素に、オリジナルのCSSクラスを作って指定します。
mt-5クラスを指定したdivタグに、section-singleというクラス指定を追加して下さい。

<div class="section-single mt-5">

CSSファイルで、背景画像を指定します。
画像のパスは各自、ご自身のフォルダ構成に合わせて変更して下さい。

.section-single{
  background-image: url(images/single-bg.jpg);
}

これだけだと、シングルカラム部分が縦方向にとても狭いです。
CSSでmin-heightの指定を加えて「少なくとも、これだけの高さは確保せよ」と命令します。
合わせて、背景画像が切れたり、繰り返さないようbackground-size: cover;という記述も加えましょう。

③コンテンツにも背景を敷き、見やすくする

文字の可読性を上げるためにちょっとした工夫をします。

<div class="d-flex flex-column...を囲う形で、divを追加してください。
新しく作ったdivには、maskというオリジナルクラスと、Bootstrapのcontainer-fluidクラスを指定して下さい。

<div class="section-single mt-5">
    <div class="mask container-fluid">
        <div class="d-flex flex-column justify-content-center">
            <h2 class="display-4">Sample Text</h2>
            <p>
                sample text sample text sample text sample text sample text sample text sample text sample text sample text sample text sample text sample text sample text
            </p>
            <div>
                <button type="button" class="btn btn-success">予約する</button>
            </div>
        </div>
    </div><!-- //END .mask -->
</div><!-- //END .section-single -->

オリジナルのCSSファイルで、maskクラスに対して以下のようなスタイル指定を書きます。

.mask{
  background-color: rgba(255, 255, 255, 0.6)
}

このRGBAという書き方では、4つ目の数字が不透明度の指定になります。
コンテンツ背景が、下図のように少し白っぽい見え方になっていれば成功です!

④配置・余白を整える

左上に配置されているコンテンツ(h2やbutton)を、背景画像の中央に表示できるように調整していきます。

コーディング順序

  1. section-singleクラスを指定しているdivに、d-flexクラスを追加。
    →背景画像全体が白っぽくなります
  2. maskクラスを指定しているdivに、py-5text-centerクラスを追加。
    →文字が中央揃えになります
  3. その下のdivタグに、h-100クラスを追加。
    →コンテンツ部分が縦方向の中央に配置されます
  4. 3と同じdivにcontainerクラスを追加。
    →コンテンツが広がり過ぎないようにします。
  5. pタグにmb-4クラスを追加。
  6. buttonタグにbtn-lgpy-4クラスを追加。

6.フッターの作成

下図のようなフッターを作成します。
こちらも使用するアイコン3つは、お好きなもので構いません。

フッターを作成する

コーディング順序

  1. footerタグを追加し、フッターエリアを作る。
  2. footerタグにbg-dark text-light py-5の3つのクラスを指定する。
  3. footeタグの中に、containerクラスを指定したdivを追加。
  4. そのdivのなかに、Bootstrapアイコンを3つ設置する。
    それぞれdisplay-3クラスを指定して、サイズを大きくする
  5. アイコンの下にulタグを追加し、中にliタグを4つ作る。
  6. liタグ内にそれぞれリンク文字を入れる(テキストは上部Navbar同じ)
  7. 上記ulタグの下にpタグで「© 2023 Bootstrap test」と記述。
    text-centerクラスを指定して、文字を中央寄せにする。

ここまで出来たら、ブラウザで表示を確認しましょう。
入力内容は表示はされていますが、まだ見にくいですね。

<footer class="bg-dark text-light py-5">
  <div class="container">
    <i class="bi bi-facebook display-4"></i>
    <i class="bi bi-instagram display-4"></i>
    <i class="bi bi-line display-4"></i>
    <ul>
      <li><a href="#">ホーム</a></li>
      <li><a href="#">サービス概要</a></li>
      <li><a href="#">サービス一覧</a></li>
      <li><a href="#">お問い合わせ</a></li>
    </ul>
    <p class="text-center">
      © 2023 Bootstrap test
    </p>
  </div>
</footer>

フッターを調整する

footer部分の表示を整えていきましょう。
表示を確認しながら、クラスをどんどん追加して調整していくイメージです。

調整ポイント

  1. 3つのアイコンを囲うdivを新規作成し、text-center pd-4クラスを指定する。
  2. 真ん中のアイコンにmx-5クラスを追加。
  3. ulタグにlist-unstyled ps-0 my-5クラスを追加。
    → リストマークの・が消える。
  4. ulタグにd-flex justify-content-centerクラスを追加。
    → 中央寄せで横並びになる。
  5. liタグそれぞれにmx-4leadクラスを指定。
  6. aタグそれぞれに、link-lighttext-decoration-noneクラスを指定。
  7. 一番下のpタグにmb-0クラスを追加。

上図のように表示されていたら完成です。

footer の liタグやaタグについて

上記ではliタグやaタグに、何度も全く同じクラス指定を書きました。

毎回同じクラス指定を書くのが面倒くさい!という場合は、 footer li a { ... } やオリジナルクラスを作るなどしてCSSファイルの方でスタイル指定を記述しても構いません。どちらの方法も間違いではありませんので、お好きな方でコーディングして下さい。

7.スマホ幅でも表示できるよう調整

ここまででLPは一通り完成しました。

ブラウザの検証ツールを使って、作成したページがスマホ幅でどう見えるか確認してみてください。
ちょっと調整が必要な箇所が、何点か見つかると思います。

分かりやすいところだと、フッターのメニュー(liタグ)部分。
下図のように文字が折り返して、ちょっと見にくいですね。

このような部分を修正していきます。

スマホ幅表示での調節

  1. アラートのテキスト部分、strongタグにd-block d-md-inlineクラスを指定する。
    → スマホ幅なら改行、タブレット幅以上では1行で表示。
  2. 2カラム部分、h2タグにmt-4 mt-md-0クラスを指定する。
  3. 画像を3つ横並びにしている部分、2つ目の画像にmy-4 my-md-0クラスを追加。
  4. フッターのulタグに指定しているd-flexクラスをd-md-flexクラスに変更し、text-centerクラスを追加する。
  5. フッターのliタグそれぞれに、mb-2クラスを追加。

他にも気になるところがあれば、BoostrapのCSSクラスを使って調整してみてください。

まとめ

ここまでで、簡単なLPが出来ました。
Bootstrapを使わずに作るよりも、とても簡単に出来る事が分かっていただけたかと思います。

本講座では基本的な部分を中心に扱いましたが、テンプレートのコードやBootstrap内でのルールを知ることが、カスタマイズを行う為に必要であることも分かったかと思います。

自分で「公式ドキュメントから必要なページを探す」「使う」というのも、Bootstrapに限らず、各種フレームワークやCMSを活用していくために必要なスキルです。慣れていれば探し方なども早くなりますから、時間がある時にドキュメントの方も確認してみてください。

Bootstrapを使いこなして、オリジナリティのある美しいサイトを制作していきましょう。

無料ビデオ講座のお知らせ

Skillhub [スキルハブ]では無料の動画講座を多数公開しています。他校だと数万円するような講座が無料で受講できます。

無料講座一覧を見る

×