Bootstrap」カテゴリーアーカイブ

Bootstrap+Font Awesome(フォトギャラリー)

BootstrapとFont Awesomeを使ってレスポンシブ対応のフォトギャラリーを作る

作りたいもの

ファイルの配置図↓

imagesに表示したい画像を入れる。

cssファイルの中にgallery.cssを作成して記述する

HTMLの記述

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>花のフォトギャラリー</title>
  <meta name="description" content="フォトギャラリーです。">
  <meta name="keywords" content="花,フォトギャラリー">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
  <link rel="stylesheet" href="css/gallery.css">
</head>
  <body>
   <!-- グローバルナビゲーション(ナビバー) -->
   <nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-dark">
     <div class="container">
      <!-- フォントオーサムのアイコンを使うi class~ </i>-->
       <a class="navbar-brand" href="gallery.html"><i class="far fa-image mr-1"></i>Cats</a>
       <!-- ハンバーガーメニュー(bootstrap公式からコピペできる) -->
      <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">
          <li class="nav-item">
             <a class="nav-link active" href="gallery.html">Home</a>
           </li>
           <li class="nav-item">
             <a class="nav-link" href="#">New</a>
          </li>
           <li class="nav-item">
             <a class="nav-link" href="#">About</a>
           </li>
         </ul>
       </div>
     </div>
   </nav>
   <!-- レスポンシブ対応のための準備1 -->
  <main class="container">
     <!-- ジャンボトロン -->
     <div class="jumbotron">
       <!-- フォントオーサムのカメラアイコンを利用する -->
       <h1><i class="fas fa-camera-retro"></i>フォトギャラリー</h1>
      <p>花のフォトギャラリーをご覧ください。</p>
     </div>
     <!-- レスポンシブ対応のための準備2 -->
     <div class="row">
       <!-- mb-3=margin-bottom3でHTMLでも直接指定できる -->
       <div class="col-lg-4 col-sm-6 mb-3">
        <!-- 画像の外側に縁をつける -->
         <div class="img-thumbnail"> 
          <img src="images/flower1">
         </div>
       </div>
       <!-- 画面サイズがlgの時横に3つ表示し、smの時は横に2つ表示 -->
      <div class="col-lg-4 col-sm-6 mb-3">
         <div class="img-thumbnail">
           <img src="images/flower2">
         </div>
       </div>
       <div class="col-lg-4 col-sm-6 mb-3">
        <div class="img-thumbnail">
           <img src="images/flower3">
         </div>
       </div> 
      <div class="col-lg-4 col-sm-6 mb-3">
         <div class="img-thumbnail">
          <img src="images/flower4">
         </div>
       </div>
       <div class="col-lg-4 col-sm-6 mb-3">
         <div class="img-thumbnail">
           <img src="images/flower5">
        </div>
       </div>
       <div class="col-lg-4 col-sm-6 mb-3">
         <div class="img-thumbnail">
           <img src="images/flower6">
         </div>       </div>
       <div class="col-lg-4 col-sm-6 mb-3">
         <div class="img-thumbnail">
           <img src="images/flower7">
         </div>
       </div>
       <div class="col-lg-4 col-sm-6 mb-3">
       <div class="img-thumbnail">
         <img src="images/flower8">
         </div>
       </div>
       <div class="col-lg-4 col-sm-6 mb-3">
         <div class="img-thumbnail">
          <img src="images/flower19">
         </div>
       </div>
     </div>
   </main>
  <!-- Bootstrapを導入するためのCDN -->
  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script> 
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
  <!-- フォントオーサムを導入するためのCDN --> 
  <script defer src="https://use.fontawesome.com/releases/v5.0.2/js/all.js"></script>
 </body>
 </html>

CSSの記述(cssファイルの中にgallery.cssを作成して記述する)

html {
  font-size: 16px;
}
body {
  padding-top: 5rem;
  font-family: "Hiragino Kaku Gothic ProN", "メイリオ", sans-serif;
}
/* 画像が指定されたグリッドに収まるようにする */
img {
  width: 100%;
}

まとめ

Bootstrapを使うことでCSSのコード量を減らすことができ、レスポンシブ対応ができる。

フォントオーサムを使うことでアイコンを使うことができる。

Bootstrapのまとめ5(レスポンシブ)

グリッドオプション(レスポンシブ)

HTMLの記述

<!DOCTYPE html>
 <html lang="ja">
 <head>
   <meta charset="utf-8">
   <title>グリッドシステム</title>
   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
   <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
   <style>
     .orange {
       background-color: orange;
       border: black 1px solid;
     }
   </style>
 </head>
 <body>
   <div class="container">
     <!-- Grid option -->
     <div class="row">
       <div class="col orange">A</div>
       <div class="col orange">B</div>
       <div class="col orange">C</div>
     </div>
     <div class="row">
       <div class="col-sm orange">A</div>
       <div class="col-sm orange">B</div>
       <div class="col-sm orange">C</div>
     </div>
     <div class="row"> 
       <div class="col-lg orange">A</div>
       <div class="col-lg orange">B</div>
       <div class="col-lg orange">C</div>
     </div>
     <div class="row">
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
     </div>
     <div class="row">
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
     </div>
     <!-- 入れ子 -->
     <div class="row">
       <div class="col-sm-9 orange">
         Level 1: 9
         <div class="row">
           <div class="col-sm-8 orange">
             Level 2: 8          
          </div>          
     <div class="col-sm-4 orange">
             Level 2: 4
           </div>
         </div>
       </div>
       <div class="col-sm-3 orange">
         Level 1: 3
       </div>
     </div>
   </div>
   <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous">
</script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous">
</script>
   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous">
</script>
 </body>
 </html>

※ポイント

  • class = “container”(固定枠)か”container-fluid”(流動枠)の中に書く
  • class = “row”の中に書く
  • class = “col-{prefix}-{columns}”の形で書くこと
  • class = {columns}は合計が12になるようにする

補足:prefixはsm,lg,md,などの決められた画面幅を下回った時表示を変える指定でxs(スマホなど〜767px)からlg(PC大画面1120px~)となっている

Bootstrapのまとめ3(ナビバーを作る(ハンバーガーメニュー))

Bootstrapのナビバーの作り方のまとめ

どのサイトにもあるナビバーの作り方について〜ハンバーガーメニューもあります〜。(ただし画面が小さくなったとき)

作成するもの

HTMLの記述

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Navibar</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
  </head>
  <body>
    <!-- 色をそれぞれ変えられる -->
    <!-- <nav class="navbar navbar-expand-lg navbar-light bg-light"> -->
    <!-- <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> -->
    <!-- <nav class="navbar navbar-expand-lg navbar-dark bg-primary"> -->
      <!-- ナビバーの背景色を自分でカスタマイズできる -->
      <nav class="navbar navbar-expand-lg navbar-light" style="background-color: #e3f2fd;">
        <!-- ハンバーガーメニューを作る=画面を狭めると出る(三)ぽいやつ -->
      <a class="navbar-brand" href="#">Navbar</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">
          <!-- スタイルをアクティブにする=黒字の状態 -->
          <li class="nav-item active">
            <a class="nav-link" href="#">Home</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Menu1</a>
          </li>
          <li class="nav-item">
            <!-- スタイルを無効状態にする=半透明にする -->
            <a class="nav-link disabled" href="#">Menu2</a>
          </li>
        </ul>
      </div>
    </nav>
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
  </body>
</html>

Bootstrapのまとめ2(Jumbotoron)

Bootstrapで実際に試してみる

実装イメージ

HTMLの記述

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>Bootstrap</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
</head>
 <body>
   <h1>Bootstrap</h1>
   <button type="button">ボタン</button>
   <button type="button" class="btn btn-primary">Primary</button>
   <button type="button" class="btn btn-success">Success</button>
   <button type="button" class="btn btn-outline-primary">Primary</button>
   <button type="button" class="btn btn-outline-success">Success</button>
   <button type="button" class="btn btn-primary btn-lg">Primary</button>
   <button type="button" class="btn btn-success btn-sm">Success</button>
   <button type="button" class="btn btn-success btn-sm" disabled>Success</button>
  <div class="container">
    <div class="jumbotron">
      <h1>Jumbotoron</h1>
      <p>Bootstrapへようこそ</p>
      <button class="btn btn-primary btn-lg">Sing Up</button>
    </div>
    <form>
      <div class="form-group">
        <label for="exampleInputEmail1">Email address</label>
        <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email">
        <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
       </div>
      <div class="form-group">
        <label for="exampleInputPassword1">Password</label>
         <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
      </div>
      <div class="form-check">
        <label class="form-check-label">
          <input type="checkbox" class="form-check-input">Check me out
        </label>
      </div>
       <button type="submit" class="btn btn-primary">Submit</button>
    </form>
   </div>
  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
</body>
</html>

※ポイント

CSSに何も書かなくてもHTMLだけで実現できるのもメリット!

Bootstrapのまとめ1(概要)

Bootstrapとは?

フロントエンド開発を効率よく行うためのフロントエンドフレームワーク

レスポンシブ対応のウェブサイトのレイアウトを、簡単に素早くできるのでCSSフレームワークとも呼ばれる

よく使うレイアウトやUIコンポーネントが用意されていて簡単に使うことができる。無償で使うことができる。

ライセンスはMITライセンス

※MITライセンスとは?以下Wikipediaから引用

  1. このソフトウェアを誰でも無償で無制限に扱って良い。ただし、著作権表示および本許諾表示をソフトウェアのすべての複製または重要な部分に記載しなければならない。

  2. 作者または著作権者は、ソフトウェアに関してなんら責任を負わない。

Bootstrapの利用方法

https://getbootstrap.com/

ダウンロードして使う方法とCDNを使って利用する方法があり、CDNの場合<head></head>の中に以下を記述してつかいます。

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
</body>タグの直前に以下を記述する
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>

なぜBootstrapを使うのか?

メリット:チートシートなどを使うことにより素早く開発することができる。

デメリット:良くも悪くもテンプレートなので似たようなデザインのサイトになりがちになる

その2に続く