2019年7月25日 星期四

程式設計師應有的程式技能-BootStrap排版-前端技術

BootStarp4實做入門

5. 容器應用

一、容器基本概念

  1. 凡是要用 BootStrap 的網格系統來排版,一定要使用容器(container)。
  2. 一個頁面中可以有多個容器。
  3. 容器也可以巢狀使用(容器中還有容器)
  4. 容器有兩種,一種是寬度有上限的容器:
    <div class="container">
      ...
    </div>
  5. 另一種是全螢幕容器:
    <div class="container-fluid">
      ...
    </div>
  6. 沒加容器之前。網頁內容會緊貼著邊緣,加上之後,預設就有邊距出現。

二、容器應用:滿版底色+有限寬度

  1. 在 .container 之外多一層 <div> 並設想要的底色或底圖即可。
    <div style="background-color: #185252;">
        <div class="container">
        </div>
    </div>

BootStarp4實做入門

6. 網格系統

一、使用網格的注意事項

  1. BootStrap4的網格系統以 flexbox(CSS3)為基礎(取代 table、floats…),因此可以做到自動等寬等高的欄位 、自動平均欄位、垂直置中等以往很難做的功能。
  2. 同時也代表對 IE9(以下)不再支援,至少要用IE10才行。
  3. 網格系統必須在容器(.container)中才有作用

二、指定欄寬用法

  1. 一般使用範例:
    <div class="container">
        <div class="row">
            <div class="col-sm-3">側邊三欄</div>
            <div class="col-sm-9">右邊九欄</div>
        </div>
    </div>
  2. .row 代表一個橫列,以確保裡面的欄位可以對齊、排序。
  3. .col-sm 式斷點前綴詞,後面接的是欄位寬度設定,預設滿版為12欄
  4. 若超過12欄,則會自動新增一個 .row

三、自動等寬用法

  1. 在 BootStrap4 中也可以這樣使用等寬欄位:
    <div class="container">
        <div class="row">
            <div class="col">col 等寬 1/5</div>
            <div class="col">col 等寬 2/5</div>
            <div class="col">col 等寬 3/5</div>
            <div class="col">col 等寬 4/5</div>
            <div class="col">col 等寬 5/5</div>
        </div>
        <div class="row">
            <div class="col-sm">col-sm 等寬 1/5</div>
            <div class="col-sm">col-sm 等寬 2/5</div>
            <div class="col-sm">col-sm 等寬 3/5</div>
            <div class="col-sm">col-sm 等寬 4/5</div>
            <div class="col-sm">col-sm 等寬 5/5</div>
        </div>
    </div>
  2. 上方的用法就是不管螢幕多大,都要分成五欄
  3. 下方的用法是當螢幕在 576 以上時,才分五欄,在 576 以下的時候,會自動調成單欄式。

小技巧:
輸入 .row>.col-sm*5 然後按 tab 鍵,可以快速產生以上語法

四、指定欄寬+自動欄寬

  1. 可以指定某幾欄的欄寬,其餘的自行自動平均
    <div class="container">
        <div class="row">
            <div class="col-sm">自動平均分配</div>
            <div class="col-sm-7">指定佔 7 欄</div>
            <div class="col-sm">自動平均分配</div>
        </div>
    </div>

五、根據內容多寡自動調整欄寬

  1. 若不確定該站多少欄寬,亦可讓電腦自行根據內容多寡來判斷:
    <div class="container">
        <div class="row">
            <div class="col-sm">自動平均分配</div>
            <div class="col-sm-auto">根據中間內容多多寡來判斷欄寬</div>
            <div class="col-sm">自動平均分配</div>
        </div>
    </div>

六、不同斷點的欄寬搭配

  1. 可以在同一個欄位根據不同斷點給予不同大小
    <div class="container">
        <div class="row">
            <div class="col">自動平均分配</div>
            <div class="col-sm-6 col-md-7 col-lg-8">根據不同螢幕大小來指定中間欄位欄寬</div>
            <div class="col">自動平均分配</div>
        </div>
    </div>
  2. 如果是只有用col,那麼,任何裝置都會按照 col 設定來分欄位(不管螢幕多大多小)
  3. 可以同時用多個斷點,例如:col-sm-4 col-md-3,意思就是用手機看時,該區域寬度佔4欄,用平板看時,該區域寬度佔3欄。
  4. 詳情:http://bootstrap.hexschool.com/docs/4.0/layout/grid/

BootStarp4實做入門

6-1 斷點

一、什麼是斷點?

  1. 還是不明白吧!(廢話)所謂斷點,在這裡指的是當螢幕尺寸符合斷點範圍時,才會根據斷點設定來實施網格系統(例如左邊9欄,右邊3欄),若是不符合斷點範圍,則自動調整為一欄式(通常是在手機瀏覽的情況下)。
  2. 詳情:http://bootstrap.hexschool.com/docs/4.0/layout/overview/#%E9%9F%BF%E6%87%89%E5%BC%8F%E6%96%B7%E9%BB%9E

二、BootStrap4 的斷點

sm >= 576 px
md >= 768 px
lg >= 992 px
xl >= 1200 px
  1. 如果寫:.col-sm-3,意思就是當螢幕 >= 576px 時,就會將此區域的寬度設為螢幕的 3/12。
  2. 若同時寫:col-sm-4 col-md-3。意思就是當螢幕 >= 768 px時,就會將此區域的寬度設為螢幕的 3/12,若螢幕 < 768 但 >= 576px 時,就會將此區域的寬度設為螢幕的 4/12。
BootStarp4實做入門

6-2 BootStrap3 及 BootStrap4 的斷點比較

  1. BootStrap4 的斷點前綴詞範圍和BootStrap3 不同:
    • 最小斷點改為 575px,
    • 又多了一個 col-xl 前綴詞,
    • 並將 col-xs 改為 col-
    • 此外,BootStrap3 一定要設寬度,例如 col-sm-3col-sm-9,但在 BootStrap4 允許不設寬度,例如四組 col-sm 時,每個欄位會自動調為 25%,因此,可以輕鬆做到五欄、七欄、八欄...等效果。
  2. 斷點差異比較表:
    575 px 以下576 ~ 767 px768 ~ 991 px992 ~ 1199 px1200 px 以上
    BootStrap3 前綴col-xscol-smcol-mdcol-lg
    BootStrap4 前綴col-col-smcol-mdcol-lgcol-xl
    對應裝置any手機平板桌機螢幕大螢幕


  3.  
BootStarp4實做入門

6-3 欄位排序

  1. 最常見的例子是三欄式畫面(左側邊+主內容+右側邊),在手機觀看,變成單欄式時,希望變成:(主內容→左側邊→右側邊)的順序。
  2. 利用 .order 就能調整:
    <div class="container">
      <div class="row">
        <div class="col-sm-7 order-sm-2">
          在中間的主內容區
        </div>
        <div class="col-sm order-sm-1">
          在左邊的側邊欄
        </div>
        <div class="col-sm order-sm-3">
          在右邊的側邊欄
        </div>
      </div>
    </div>
  3. 寫的時候,請依照在單欄式情況下,希望呈現的先後順序來寫,然後再利用 order 來調整位置。在三欄式時(未自適應前),就會按照 order 的順序來排,在單欄式時,就會忽略 order,依照語法順序來排。
  4. 範例:

BootStarp4實做入門

6-4 欄位推移

  1. BootStrap4 裡面已經沒辦法用 .col-offset-x 或者 .offset-sm-x 來跳過幾欄。
  2. 可以利用 .mr-auto 來將右邊剩下的空位謄出來。
    <div class="container">
        <div class="row">
            <div class="col-2">col 等寬 1/3</div>
            <div class="col-2 mr-auto">col 等寬 2/3</div>
            <div class="col-2">col 等寬 3/3</div>
        </div>ass="col-2">col 等寬 3/3</div>
        </div>
    </div>
  3. 或者用 .mx-auto 把空位平均分散到左右兩邊
    <div class="container">
        <div class="row">
            <div class="col-2">col 等寬 1/3</div>
            <div class="col-2 mx-auto">col 等寬 2/3</div>
            <div class="col-2">col 等寬 3/3</div>
        </div>
    </div>
  4. 或用 .ml-auto 把空位放到左邊
    <div class="container">
        <div class="row">
            <div class="col-2">col 等寬 1/3</div>
            <div class="col-2 ml-auto">col 等寬 2/3</div>
            <div class="col-2">col 等寬 3/3</div>
        </div>
    </div>
  5. 範例:
BootStarp4實做入門

6-5 巢狀欄位

  1. .row 裡面還可以有 .row,子 .row 會以父 .row 的寬度為依據來進行寬度調整
  2. 例如:
    <div class="container">
      <div class="row">
        <div class="col-sm-8">
          主內容
          <div class="row">
            <div class="col-sm-3">欄</div>
            <div class="col-sm-6">欄</div>
            <div class="col-sm-3">欄</div>
          </div>
        </div>   
        <div class="col-sm-4">
          側邊
          <div class="row">
            <div class="col-sm-3">欄</div>
            <div class="col-sm-6">欄</div>
            <div class="col-sm-3">欄</div>
          </div>
        </div>
      </div>
    </div>

  3. 範例:
BootStarp4實做入門

6-6 Flexbox方向性

  1. 水平:.flex-row(這是預設值)
  2. 反向水平:.flex-row-reverse
  3. 垂直:.flex-column
  4. 反向垂直:.flex-column-reverse
  5. 範例:
BootStarp4實做入門

7. 間隔工具

  1. 間隔工具的組成為「屬性邊緣-尺寸」
  2. 屬性設定:
    • m - 這個 class 會設定 margin
    • p - 這個 class 會設定 padding
  3. 邊緣設定:
    • t - 這個 class 會設定 margin-top 或 padding-top
    • b - 這個 class 會設定 margin-bottom 或 padding-bottom
    • l - 這個 class 會設定 margin-left 或 padding-left
    • r - 這個 class 會設定 margin-right 或 padding-right
    • x - 這個 class 會設定 *-left 和 *-right
    • y - 這個 class 會設定 *-top 和 *-bottom
    • 空白 - 如果邊緣 class 未加入則會設定 margin 或 padding 在元素的四個邊緣
  4. 尺寸設定:
    • 0 - 這個 class 會設定 margin 或 padding 的樣式值為 0
    • 1 - (預設時) 這個 class 會設定 margin 或 padding 於 $spacer * .25
    • 2 - (預設時) 這個 class 會設定 margin 或 padding 於 $spacer * .5
    • 3 - (預設時) 這個 class 會設定 margin 或 padding 於 $spacer
    • 4 - (預設時) 這個 class 會設定 margin 或 padding 於 $spacer * 1.5
    • 5 - (預設時) 這個 class 會設定 margin 或 padding 於 $spacer * 3
  5. 詳情:http://bootstrap.hexschool.com/docs/4.0/utilities/spacing/
後續內容省略......

【資料引用資訊】
google關鍵字:BootStarp4實做入門

沒有留言:

張貼留言