第 5 章 柵格系統

水之原發表於2016-04-24

學習要點:

1.移動裝置優先
2.佈局容器
3.柵格系統

主講教師:李炎恢

本節課我們主要學習一下 Bootstrap 的柵格系統,提供了一套響應式、移動裝置優先的流式柵格系統。

一.移動裝置優先
在 HTML5 的專案中,我們做了移動端的專案。它有一份非常重要的 meta,用於設定螢幕和裝置等寬以及是否執行使用者縮放,及縮放比例的問題。
//分別為:螢幕寬度和裝置一致、初始縮放比例、最大縮放比例和禁止使用者縮放

<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">

 

二.佈局容器
Bootstrap 需要為頁面內容和柵格系統包裹一個.container 容器。由於 padding 等屬性的原因,這兩種容器類不能相互巢狀。
//固定寬度

<div class="container">
                  ...
</div>

//100%寬度

<div class="container-fluid">
                       ...
</div>

 

柵格系統中, 瀏覽器會隨著螢幕的大小的增減自動分配最多12列。 通過一系列的行(row)與列(column)的組合來建立頁面佈局。工作原理如下:
1.“行 (row) ” 必須包含在 .container (固定寬度) 或 .container-fluid (100%寬度)中,以便為其賦予合適的排列(aligment)和內補(padding)。
2.通過“行(row)”在水平方向建立一組“列(column)”。
3.你的內容應當放置於“列(column)”內,並且,只有“列(column)”可以作為行(row)”的直接子元素。
4.類似 .row 和 .col-xs-4 這種預定義的類,可以用來快速建立柵格佈局。
Bootstrap 原始碼中定義的 mixin 也可以用來建立語義化的佈局。
5.通過為 “列 (column) ” 設定 padding 屬性, 從而建立列與列之間的間隔 (gutter) 。通過為 .row 元素設定負值 margin 從而抵消掉為 .container 元素設定的 padding,也就間接為“行(row)”所包含的“列(column)”抵消掉了 padding。

6.負值的 margin 就是下面的示例為什麼是向外突出的原因。在柵格列中的內容排成一行。
7.柵格系統中的列是通過指定 1 到 12 的值來表示其跨越的範圍。例如,三個等寬的列可以使用三個 .col-xs-4 來建立。
8.如果一“行(row)”中包含了的“列(column)”大於 12,多餘的“列(column) ”所在的元素將被作為一個整體另起一行排列。
9.柵格類適用於與螢幕寬度大於或等於分界點大小的裝置 , 並且針對小螢幕裝置覆蓋柵格類。 因此,在元素上應用任何 .col-md-* 柵格類適用於與螢幕寬度大於或等於分界點大小的裝置 ,並且針對小螢幕裝置覆蓋柵格類。因此, 在元素上應用任何 .col-lg-*不存在, 也影響大螢幕裝置。

//建立一個響應式行

<div class="container">
    <div class="row">
        ...
    </div>
</div>

//建立最多 12 列的響應式行

<div class="container">
    <div class="row">
          <div class="col-md-1 a">1</div>
          <div class="col-md-1 a">2</div>
          <div class="col-md-1 a">3</div>
          <div class="col-md-1 a">4</div>
          <div class="col-md-1 a">5</div>
          <div class="col-md-1 a">6</div>
          <div class="col-md-1 a">7</div>
          <div class="col-md-1 a">8</div>
          <div class="col-md-1 a">9</div>
          <div class="col-md-1 a">10</div>
          <div class="col-md-1 a">11</div>
          <div class="col-md-1 a">12</div>
    </div>
</div>

//為了顯示明顯的 CSS

.a {
    height: 100px;
    background-color: #eee;
    border: 1px solid #ccc;
}

//總列數都是 12,每列分配多列

<div class="container">
    <div class="row">
          <div class="col-md-4 a">1-4</div>
          <div class="col-md-4 a">5-8</div>
          <div class="col-md-4 a">9-12</div>
    </div>
    <div class="row">
          <div class="col-md-8 a">1-8</div>
          <div class="col-md-4 a">9-12</div>
    </div>
</div>

 

柵格參數列

如上圖所示,柵格系統最外層區分了四種寬度的瀏覽器:超小屏(<768px)、小屏(>=768px)、中屏(>=992px)和大屏(>=1200px)。而內層.container 容器的自適應寬度為:自動、750px、970px 和 1170px。自動的意思為,如果你是手機螢幕,則全面獨佔一行顯示。
//四種螢幕分類全部啟用

<div class="container">
    <div class="row">
          <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div>
          <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div>
          <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div>
          <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div>
          <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div>
          <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div>
          <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div>
          <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div>
          <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div>
          <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div>
          <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div>
          <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 a">4</div>
    </div>
</div>

//有時我們可以設定列偏移,讓中間保持空隙

<div class="container">
    <div class="row">
          <div class="col-md-8 a">8</div>
          <div class="col-md-3 col-md-offset-1 a">3</div>
    </div>
</div>

//也可以巢狀,嵌滿也是 12 列

<div class="container">
    <div class="row">
          <div class="col-md-9 a">
              <div class="col-md-8 a">1-8</div>
              <div class="col-md-4 a">9-12</div>
          </div>
          <div class="col-md-3 a">
              11-12
          </div>
    </div>
</div>

//可以把兩個列交換位置,push 向左移動,pull 向右移動

<div class="container">
    <div class="row">
          <div class="col-md-9 col-md-push-3 a">9</div>
          <div class="col-md-3 col-md-pull-9 a">3</div>
    </div>
</div>

 

相關文章