[ 前端工具 ] - Bootstrap


Posted by krebikshaw on 2020-08-25

Bootstrap 簡介

簡單一句話說明 Bootstrap:幫你寫好的 CSS + JavaScript

引入 Bootstrap

打開官網的 Document 頁面

可以在這裡找到 CSS 與 JS 的引用路徑

  • 有些功能是只需要 CSS 的,就只需要引用 CSS
  • 有些功能是運用到 JS 的,就要連 JS 以起引用進來

Utilities CSS

  • utilities CSS 又可以叫做 atomic CSS 或者 functional CSS
  • Boostrap 的這個功能提供了很多幫你設定好的 CSS,讓你只要在文件上找到你想要的樣式,它所對應到的 class-name,把 class-name 加到元素上就可以直接套用了
  • 舉例
    • d-flex:這個 class 會幫你在元素上面設定 display: flex;
    • flex-row:這個 class 會幫你在元素上面設定 flex-direction: row;
    • p-2:這個 class 會幫你在元素上面設定 padding: 0.5em;
    • mb-3:這個 class 會幫你在元素上面設定 margin-bottom: 1em;

Grid system 網格系統

  • 網格系統的環境下,會把頁面分為 12 個縱向的欄位(如圖)

  • 我們可以利用欄位的數量,來設定元素的空間分佈

  • 利用 container 這個 class
<div class="container">
  <div class="row">
    <div class="col">
      1 of 3
    </div>
    <div class="col-6">
      2 of 3 (wider)
    </div>
    <div class="col">
      3 of 3
    </div>
  </div>
  <div class="row">
    <div class="col">
      1 of 3
    </div>
    <div class="col-5">
      2 of 3 (wider)
    </div>
    <div class="col">
      3 of 3
    </div>
  </div>
</div>
  • 裡面有看到 col-5, col-6 這些 class 就是在設定他佔有的空間
  • class-name 可以參考下列這個表格

  • .col-md- 開頭的 class-name 代表設定在頁面寬度 > 768px 的時候的分佈樣貌
  • .col- 開頭的 class-name 代表設定在手機版模式下的分佈樣貌
  • 若希望一個元素在 RWD 佔 12 格空間,在電腦頁面佔 4 格空間,可以這樣設定:
<div class="col-12 col-md-4"></div>

Offset classes

  • 若是不想要從第一格開始算,網格系統也有提供 offset 的功能

Bootstrap 實際演練

Todo List

<!DOCTYPE html>

<html>
<head>
  <meta charset="utf-8">

  <title>Boostrap</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.1/css/bootstrap.min.css" integrity="sha384-VCmXjywReHh4PwowAiWNagnWcLhlEJLA5buUprzK8rxFgeH0kww/aWY76TfkUoSX" crossorigin="anonymous">


  <script>

  </script>
  <style>
    .box {
      background: grey;
    }

  </style>
</head>

<body>
  <nav class="navbar navbar-expand-lg navbar-light bg-light">
    <a class="navbar-brand" href="#">Todo List</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="#">Home <span class="sr-only">(current)</span></a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Introduction</a>
        </li>
      </ul>
    </div>
  </nav>
  <div class="container">
    <div class="row mt-4">
      <div class="col-12">
        <div class="alert alert-primary" role="alert">
          這是我的 todo 小作品!
        </div>
      </div>
    </div>
    <div class="row">
      <div class="col-12 col-md-8">
        <div class="form-group">
          <input type="text" placeholder="請輸入待辦事項" class="form-control" id="exampleInputPassword1">
        </div>
      </div>
      <div class="col-12 col-md-4">
        <button class="btn btn-primary btn-block">新增</button>
      </div>
    </div>
    <div class="row">
      <div class="col-12">
          <div class="card">
            <div class="card-header">
              代辦事項清單
            </div>
            <ul class="list-group list-group-flush">
              <li class="list-group-item d-flex justify-content-between align-items-center">
                <div>
                  <span class="badge badge-success mr-2">已完成</span>買東西
                </div>
                <div>
                  <button class="btn btn-danger">刪除</button>
                  <button class="btn btn-primary">未完成</button>
                </div>
              </li>
              <li class="list-group-item d-flex justify-content-between align-items-center">
                <div>
                  <span class="badge badge-secondary mr-2">未完成</span>搶票
                </div>
                <div>
                  <button class="btn btn-danger">刪除</button>
                  <button class="btn btn-primary">已完成</button>
                </div>
              </li>
              <li class="list-group-item d-flex justify-content-between align-items-center">
                <div>
                  <span class="badge badge-secondary mr-2">未完成</span>出門丟垃圾
                </div>
                <div>
                  <button class="btn btn-danger">刪除</button>
                  <button class="btn btn-primary">已完成</button>
                </div>
              </li>
            </ul>
          </div>
      </div>
    </div>
  </div>
  <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.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.1/js/bootstrap.min.js" integrity="sha384-XEerZL0cuoUbHE4nZReLT7nx9gQrQreJekYhJD9WNWhH8nEW+0c5qq7aIo2Wl30J" crossorigin="anonymous"></script>
</body>
</html>

bootswatch


#Bootstrap







Related Posts

實作 Redux(四):共享結構的物件提高性能

實作 Redux(四):共享結構的物件提高性能

[Week 2] JavaScript - 函式 function

[Week 2] JavaScript - 函式 function

Slack DM badge 製作

Slack DM badge 製作


Comments