BootstrapとGrid-templateの組み合わせが超万能で最強【コピペレイアウト】

Coding

今回はBootstrapとGrid-templateを組み合わせることで出来るレスポンシブ対応レイアウトが万能すぎて最強だと思ったので紹介します。

基本パターンのみの紹介にしますがコピペで使用して頂いてOKです。このレイアウトを元に編集すれば楽になると思います。

WEB制作の初期の段階でレイアウト作成を簡単に済ませたいと考えている人は是非活用下さい。

万能レイアウト

BootstrapとGrid-templateを組み合わせるとコピペのみで以下のレイアウトが一瞬で出来ます。もちろん完璧にレスポンシブ対応がされています。

このレイアウトにはグロナビ、メインコンテンツ、右サイドバー、パンくずリスト、フッターが含まれ、全てレスポンシブになっています。

PC時の見た目
スマホ時の見た目

BootstrapとGrid-template

Bootstrapについては以下の記事を参照して読み込み方と基本的な扱い方、考え方を理解して下さい。

Grid-templateについては以下の記事を見て頂ければ基本的な考え方と技法が分かります。

また今回のレイアウトにはメインビジュアルにBootstrapの中にあるカルーセルスライダーを入れています。これを使用するのにjQueryが必要になるので、そのファイルの準備の仕方を以下の記事で理解しときましょう。

万能レイアウトのコード【コピペOK】

上記3点の基礎知識を理解した上で以下のHTMLとCSSをコピペして下さい。これだけで先程のレイアウトが完成します。

今回の方法は、Bootstrap、jQuery共にローカルに落としてアップロードしています。CDNから読み込みたい場合はその部分を差し替えて下さい。

HTML

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Bootstrap TEST</title>
    <link rel="icon" href="favicon/favicon.jpg">
    <meta name="description" content="Bootstrap TEST">

    <! – ブートストラップ -->
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="css/bootstrap-grid.min.css">
    <link rel="stylesheet" href="css/bootstrap-reboot.min.css">
    <link rel="stylesheet" href="css/styles.css">
  </head>

  <body>

    <! – ヘッダー -->

    <header>

      <! – グロナビ -->

      <nav class="navbar navbar-expand-lg navbar-light bg-light">
        <a class="navbar-brand" href="#">グロナビ</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarSupportedContent">
          <ul class="navbar-nav mr-auto">
            <li class="nav-item active">
              <a class="nav-link" href="#">ホーム <span class="sr-only">(current)</span></a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">リンクA</a>
            </li>
            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                ドロップダウン
              </a>
              <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                <a class="dropdown-item" href="#">リンクB</a>
                <a class="dropdown-item" href="#">リンクC</a>
                <div class="dropdown-divider"></div>
                <a class="dropdown-item" href="#">リンクD</a>
              </div>
            </li>
            <li class="nav-item">
              <a class="nav-link disabled" href="#">リンクE</a>
            </li>
          </ul>
          <form class="form-inline my-2 my-lg-0">
            <input class="form-control mr-sm-2" type="search" placeholder="検索" aria-label="search">
            <button class="btn btn-outline-success my-2 my-sm-0" type="submit">検索</button>
          </form>
        </div>
      </nav>

      <! – メインビジュアル -->

      <div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
        <div class="carousel-inner">
          <div class="carousel-item active">
            <svg class="bd-placeholder-img bd-placeholder-img-lg d-block w-100" width="800" height="400" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: メインビジュアル1"><title>メインビジュアル1</title><rect width="100%" height="100%" fill="#777"/><text x="50%" y="50%" fill="#555" dy=".3em">メインビジュアル1</text></svg>
          </div>
          <div class="carousel-item">
            <svg class="bd-placeholder-img bd-placeholder-img-lg d-block w-100" width="800" height="400" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: メインビジュアル2"><title>メインビジュアル2</title><rect width="100%" height="100%" fill="#666"/><text x="50%" y="50%" fill="#444" dy=".3em">メインビジュアル2</text></svg>
          </div>
          <div class="carousel-item">
            <svg class="bd-placeholder-img bd-placeholder-img-lg d-block w-100" width="800" height="400" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: メインビジュアル3"><title>メインビジュアル3</title><rect width="100%" height="100%" fill="#555"/><text x="50%" y="50%" fill="#333" dy=".3em">メインビジュアル3</text></svg>
          </div>
        </div>
        <a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
          <span class="carousel-control-prev-icon" aria-hidden="true"></span>
          <span class="sr-only">Previous</span>
        </a>
        <a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
          <span class="carousel-control-next-icon" aria-hidden="true"></span>
          <span class="sr-only">Next</span>
        </a>
      </div>
    </header>

    <! – ヘッダー end-->

    <! – メインコンテンツ -->

    <main>
      <nav aria-label="breadcrumb">
        <ol class="breadcrumb mb-0 p-0">
          <li class="breadcrumb-item"><a href="#">Home</a></li>
          <li class="breadcrumb-item"><a href="#">パンくず1</a></li>
          <li class="breadcrumb-item active" aria-current="page">パンくず2</li>
        </ol>
      </nav>

    <! – カード -->

    <section>
      <div class="container">
        <div class="row">
          <div class="col-sm m-5">
            <div class="card" style="width: 18rem;">
              <svg class="bd-placeholder-img card-img-top" width="100%" height="180" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder:Image cap"><title>Placeholder</title><rect fill="#868e96" width="100%" height="100%"/><text fill="#dee2e6" dy=".3em" x="40%" y="50%">Image cap</text></svg>
              <div class="card-body">
                <h5 class="card-title">カードデザイン</h5>
                <p class="card-text">この様に簡単にカードのデザインが完成します。これもCSSは一切追加記述せずHTMLをコピペしただけです。</p>
                <a href="#" class="btn btn-primary">詳しく見る</a>
              </div>
            </div>
          </div>
          <div class="col-sm m-5">
            <div class="card" style="width: 18rem;">
              <svg class="bd-placeholder-img card-img-top" width="100%" height="180" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder:Image cap"><title>Placeholder</title><rect fill="#868e96" width="100%" height="100%"/><text fill="#dee2e6" dy=".3em" x="40%" y="50%">Image cap</text></svg>
              <div class="card-body">
                <h5 class="card-title">カード</h5>
                <p class="card-text">この様に簡単にカードのデザインが完成します。これもCSSは一切追加記述せずHTMLをコピペしただけです。</p>
                <a href="#" class="btn btn-primary">詳しく見る</a>
              </div>
            </div>
          </div>
          <div class="col-sm m-5">
            <div class="card" style="width: 18rem;">
              <svg class="bd-placeholder-img card-img-top" width="100%" height="180" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder:Image cap"><title>Placeholder</title><rect fill="#868e96" width="100%" height="100%"/><text fill="#dee2e6" dy=".3em" x="40%" y="50%">Image cap</text></svg>
              <div class="card-body">
                <h5 class="card-title">カードデザイン</h5>
                <p class="card-text">この様に簡単にカードのデザインが完成します。これもCSSは一切追加記述せずHTMLをコピペしただけです。</p>
                <a href="#" class="btn btn-primary">詳しく見る</a>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="container">
        <div class="row">
          <div class="col-sm m-5">
            <div class="card" style="width: 18rem;">
              <svg class="bd-placeholder-img card-img-top" width="100%" height="180" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder:Image cap"><title>Placeholder</title><rect fill="#868e96" width="100%" height="100%"/><text fill="#dee2e6" dy=".3em" x="40%" y="50%">Image cap</text></svg>
              <div class="card-body">
                <h5 class="card-title">カードデザイン</h5>
                <p class="card-text">この様に簡単にカードのデザインが完成します。これもCSSは一切追加記述せずHTMLをコピペしただけです。</p>
                <a href="#" class="btn btn-primary">詳しく見る</a>
              </div>
            </div>
          </div>
          <div class="col-sm m-5">
            <div class="card" style="width: 18rem;">
              <svg class="bd-placeholder-img card-img-top" width="100%" height="180" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder:Image cap"><title>Placeholder</title><rect fill="#868e96" width="100%" height="100%"/><text fill="#dee2e6" dy=".3em" x="40%" y="50%">Image cap</text></svg>
              <div class="card-body">
                <h5 class="card-title">カード</h5>
                <p class="card-text">この様に簡単にカードのデザインが完成します。これもCSSは一切追加記述せずHTMLをコピペしただけです。</p>
                <a href="#" class="btn btn-primary">詳しく見る</a>
              </div>
            </div>
          </div>
          <div class="col-sm m-5">
            <div class="card" style="width: 18rem;">
              <svg class="bd-placeholder-img card-img-top" width="100%" height="180" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder:Image cap"><title>Placeholder</title><rect fill="#868e96" width="100%" height="100%"/><text fill="#dee2e6" dy=".3em" x="40%" y="50%">Image cap</text></svg>
              <div class="card-body">
                <h5 class="card-title">カードデザイン</h5>
                <p class="card-text">この様に簡単にカードのデザインが完成します。これもCSSは一切追加記述せずHTMLをコピペしただけです。</p>
                <a href="#" class="btn btn-primary">詳しく見る</a>
              </div>
            </div>
          </div>
        </div>
      </div>
    </section>
  </main>

  <! – サイドバー -->

  <aside>
    <div>サイドバー</div>
  </aside>

  <! – フッター -->

  <footer>
    <div>フッター</div>
  </footer>

  <script type="text/javascript" src="js/jQuery.js"></script>
  <script type="text/javascript" src="js/bootstrap.bundle.min.js"></script>
  <script type="text/javascript" src="js/bootstrap.min.js"></script>
  </body>

CSS

body {
    display: grid;
    grid-template:
     "... header header header ..." auto
     "... main   main   right ..." 1fr
     "... footer footer footer ..." 50px
     / auto 1fr 1fr 300px auto;
 }

 @media screen and (max-width: 1000px){
    body{
      grid-template: 
      "header" auto
      "main" 1fr
      "right " auto
      "footer" 100px
      ;
    }
  }

 header {
    grid-area: header;
    background-color: brown;
  }
   
  main {
    grid-area: main;
    background-color: chartreuse;
  }
   
  aside {
    grid-area: right;
    background-color: gold;
  }
   
  footer {
    grid-area: footer;
    background-color: #777;
  }

上手くいかない場合は、Bootstrap、jQuery、stylesシートが置かれている場所を確認して下さい。上記の記述で配置されているパスにおいて下さい。またgrid-templateの名前とレイアウトした要素を一致させないと上手くいきません。再度名前が一致しているか確かめましょう。


以上が「BootstrapとGrid-templateの組み合わせが超万能で最強【コピペレイアウト】」でした。

この2つを理解するとレイアウトに困ることは一切なくなります。ただし注意点としてIEに対応出来ない点があるので気にする方には向いていません。

CodingCSS,HTML,Reference

Posted by KT