あぱれる男子のつぶやき

プログラミングを奮闘中

【Bootstrap】架空ECサイト作成の手順④

f:id:mmmouh8845:20200214153559j:plain


今回でメインの部分は終わりです。
さっそく前回の続きからいきましょう。

Bootstrapで架空サイトを作成してみる


①の記事では、全体像の把握とヘッダーからナビまでのデザイン。

②の記事ではSection1と2のデザイン。

③の記事ではSection3と4のデザインをやってきました。


www.appatwi.com


www.appatwi.com


www.appatwi.com



今回はSection5と6のデザインについてです。

f:id:mmmouh8845:20200229130529p:plain


Section5のデザイン


画像を見ていただければわかるように、Section5は2つのコンテンツで構成されています。

まずは、左側。Newsの部分ですが、ポイントはクリックで開閉する機能をつけていることです。

また、トップのNewsはデフォルトで開いていて、Newと書いたBadgeをつけています。


まず、この開閉するバーはアコーディオンと言いますが、BootstrapではComponentsのCollapseにあります。

Accordion exampleの欄ですね。

f:id:mmmouh8845:20200229131152p:plain


また、併用しているBadgeも同じくComponentsにありますね。


構成はこんな感じになっています。

        <!-- アコーディオンとカードの構成 -->
        <div class="row my-5 mx-lg-4 py-5">
          <!-- アコーディオン -->
          <div class="accordion col-lg-6" id="newslist">
            <div class="card">
              <div class="card-header" id="headingOne">
                <h5 class="mb-0 row mx-auto">
                  <button class="btn btn-light px-3 d-sm-flex" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
                    <p class="news-item-text text-nowrap text-left m-0"><time class="pr-sm-4 text-black-50" datetime="2020-00-00">2020.00.00</time></p>
                    <p class="news-item-text text-nowrap m-0">配送料無料キャンペーン実施中!!
                    <span class="badge badge-danger text-nowrapmx-3 p-2 my-auto">New</span></p>
                  </button>
                </h5>
              </div>
          
              <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#newslist">
                <div class="card-body">
                  <p class="news-item-text my-3">オンラインストアでお買い上げのお客様は購入金額に関わらず、配送料が無料になります。<br>
                  ぜひこの機会にご利用ください!</p>
                  <p class="news-item-link mt-5 mb-3"><a class="text-danger" href="">オススメアイテムをチェック!></a></p>
                  <p class="news-item-link"><a class="text-danger" href="">キャンペーン詳細はコチラ!></a></p>
                </div>
              </div>
            </div>

            <div class="card">
              <div class="card-header" id="headingTwo">
                <h5 class="mb-0">
                  <button class="btn btn-light collapsed px-3 d-sm-flex" type="button" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
                    <p class="news-item-text text-nowrap text-left m-0"><time class="pr-sm-4 text-black-50" datetime="2020-00-00">2020.00.00</time></p>
                    <p class="news-item-text text-nowrap m-0">〇〇に春アイテムが掲載!!</p>
                  </button>
                </h5>
              </div>

              <div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#newslist">
                <div class="card-body">
                  <p class="news-item-text my-3">今週発売のファッション誌「〇〇」の「Spring Item特集」ページにブランドアイテムが掲載されています。ぜひ、御覧ください。</p>
                    <p class="news-item-link mt-5 mb-3"><a class="text-danger" href="">詳細はコチラ!></a></p>
                  </div>
              </div>
            </div>
            <div class="card">
              <div class="card-header" id="headingThree">
                <h5 class="mb-0">
                  <button class="btn btn-light collapsed px-3 d-sm-flex" type="button" data-toggle="collapse" data-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
                    <p class="news-item-text text-nowrap text-left m-0"><time class="pr-sm-4 text-black-50" datetime="2020-00-00">2020.00.00</time></p>
                    <p class="news-item-text text-nowrap m-0">スタッフスタイリング更新しました!!</p>
                  </button>
                </h5>
              </div>
              <div id="collapseThree" class="collapse" aria-labelledby="headingThree" data-parent="#newslist">
                <div class="card-body">
                  <p class="news-item-text my-3">春のイチオシアイテムをBoot-Fashion精鋭のスタッフたちが着こなしてくれました。</p>
                  <p class="news-item-link mt-5 mb-3"><a class="text-danger" href="">詳細はコチラ!></a></p>
                </div>
              </div>
            </div>
          </div>
          <!-- ============================================================ -->

ほぼコピペで済むので、注意するところはこれまでと同様に、レスポンシブ対応くらいですね。

画面幅が狭くなったときに文章が折り返さないように、text-nowrapはなるべく使うようにしています。


他のポイントとしては、初めに開いておきたい要素には aria-expanded="true"で指定することや、 開閉する動きをつけているので、data-targetとidを一致させるなどですね。

それ以外は細かい余白、配置の調整なので、コードを見れば分かるかと思います!


また、Badgeの使い方がいまいちな場合、ComponentsにあるList groupを参考にするのが分かりやすいと思います。

f:id:mmmouh8845:20200229132941p:plain



次に右側の部分ですが、ここにはSection4で使った、画像の上に文字をつけるカードを使っているので、基本的な使い方は前回と全く同じです。

          <!-- サイドのカード -->
          <div class="card bg-dark text-white recruit-img col-lg-5 col-8 mx-auto mr-lg-4 ml-lg-4 p-0 my-5 my-lg-0">
            <img class="img-fluid w-100 h-100" src="images/recruit-min.jpg" alt="" style="min-width: 360px;  min-height: 260px;">
            <div class="card-img-overlay recruit-content">
              <h5 class="card-title mt-5 pt-5">
                <a href="#" class="card-link stretched-link">
                <b>私達と一緒に</b><br>
                <b>働いてみませんか?</b>
                </a>
              </h5>
            </div>
          </div>
          <!-- =================================================== -->
        </div> <!-- アコーディオンとカードを覆うrow-->
        <!-- ============================================================= -->


ポイントは写真に薄暗い背景色を追加して、白地の文章を目立つようにしているところです。

よく見るデザインですよね。これに関しては疑似要素を使うので、head内のstyleタグかCSSに書いていきます。

    .recruit-img {
      position: relative;
      height: 100%;
    }

    .recruit-img::before {
      content:'';
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom:0;
      background-color: rgba(0, 0, 0, 0.3);
    }


あとは同じくレスポンシブ対応で細かく書いていけばOKです。

また、imgタグに付いているstyleタグはimgの大きさを予め編集しておけば必要ありません。。



Section5に関してはこれくれいです。


Section6のデザイン


ここのデザインはSNSなどへの流入ですね。最近はECサイトでも多いと思います。


head部分を記述した最初の記事でFont AwesomeCDNを貼り付けましたが、ここで使います。

        <!-- コンタクトの構成 -->
        <div class="row my-5 py-5 contact bg-light">
          <p class="col-5 mb-5 mb-lg-0 mx-auto p-0 pl-md-5 align-self-center" style="white-space: nowrap; min-width: 210px;"><b>Boot-Fashion Offical</b></p>
          <ul class="col-8 mx-auto col-lg-6 nav">
            <li class="nav-item mx-auto mx-md-5">
              <a class="nav-link" href="#"><i class="fab fa-twitter"></i></a>
            </li>
            <li class="nav-item mx-auto mx-md-5">
              <a class="nav-link" href="#"><i class="fab fa-line"></i></a>
            </li>
            <li class="nav-item mx-auto mx-md-5">
              <a class="nav-link" href="#"><i class="fab fa-instagram"></i></a>
            </li>
            <li class="nav-item mx-auto mx-md-5">
              <a class="nav-link" href="#"><i class="fab fa-facebook-f"></i></a>
            </li>
          </ul>
        </div>
        <!-- ================================================================= -->
      </main>  


左側のBoot-Fashion Offical と書いてあるpタグの部分に関してはレスポンシブ対応に苦戦しました。。

Section5のときと同様、テキストを折り返さないようにして、余白をきれいに揃える必要があります。

また、この

とアイコンの位置関係はmd以前で変わり、縦並びになります。

f:id:mmmouh8845:20200301134837p:plain



ただ、アイコン同士は画面幅に関わらずに横並びにしたいので、 Navsの機能を使うため、class名に nav やnav-itemを用いています。



Section6に関してはこれくらいです。


まとめ

今回はSection5、6のデザインについてでしたが、ほぼ以前に使った機能でデザインは進めていく感じでした。

メインで使った機能は、

  • Collapse(Accordion)
  • Badge
  • Navs

でした。

次がラストのフッターのデザインについてです。

それでは。