柵格系統總結

柵格設計系統,是一種平面設計的方法與風格。運用固定的格子設計版面佈局,其風格工整簡潔。

柵格系統的設計原理


Bootstrap 網格系統

Bootstrap 包含了一個響應式的、移動設備優先的、不固定的網格系統,可以隨着設備或視口大小的增加而適當地擴展到 12 列。它包含了用於簡單的佈局選項的預定義類,也包含了用於生成更多語義佈局的功能強大的混合類。

Bootstrap 3 是移動設備優先的,在這個意義上,Bootstrap 代碼從小屏幕設備(比如移動設備、平板電腦)開始,然後擴展到大屏幕設備(比如筆記本電腦、臺式電腦)上的組件和網格。

移動設備優先策略

內容:決定什麼是最重要的。

佈局:優先設計更小的寬度。基礎的 CSS 是移動設備優先,媒體查詢是針對於平板電腦、臺式電腦。

漸進增強:隨着屏幕大小的增加而添加元素。

響應式網格系統隨着屏幕或視口(viewport)尺寸的增加,系統會自動分爲最多12列。

工作原理

(row(.row)必須位於container的內部,column(如.col-md-6)必須位於row的內部。如果要嵌套使用柵格,正確的做法是在column內直接續接row,然後再繼續接column,而不再需要container)

行必須放置在 .container class 內,以便獲得適當的對齊(alignment)和內邊距(padding)。

使用行來創建列的水平組。

內容應該放置在列內,且唯有列可以是行的直接子元素。

預定義的網格類,比如 .row 和 .col-xs-4,可用於快速創建網格佈局。LESS 混合類可用於更多語義佈局。

列通過內邊距(padding)來創建列內容之間的間隙。該內邊距是通過 .rows 上的外邊距(margin)取負,表示第一列和最後一列的行偏移。

網格系統是通過指定您想要橫跨的十二個可用的列來創建的。例如,要創建三個相等的列,則使用三個 .col-xs-4。

媒體查詢

/* 超小設備(手機,小於 768px) */
/* Bootstrap 中默認情況下沒有媒體查詢 */

/* 小型設備(平板電腦,768px 起) */
@media (min-width: @screen-sm-min) { ... }

/* 中型設備(臺式電腦,992px 起) */
@media (min-width: @screen-md-min) { ... }

/* 大型設備(大臺式電腦,1200px 起) */
@media (min-width: @screen-lg-min) { ... }


我們有時候也會在媒體查詢代碼中包含 max-width,從而將 CSS 的影響限制在更小範圍的屏幕大小之內。

@media (max-width: @screen-xs-max) { ... }
@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { ... }
@media (min-width: @screen-md-min) and (max-width: @screen-md-max) { ... }
@media (min-width: @screen-lg-min) { ... }

網格選項

  超小設備手機(<768px) 小型設備平板電腦(≥768px) 中型設備臺式電腦(≥992px) 大型設備臺式電腦(≥1200px)
網格行爲 一直是水平的 以摺疊開始,斷點以上是水平的 以摺疊開始,斷點以上是水平的 以摺疊開始,斷點以上是水平的
最大容器寬度 None (auto) 750px 970px 1170px
Class 前綴 .col-xs- .col-sm- .col-md- .col-lg-
列數量和 12 12 12 12
最大列寬 Auto 60px 78px 95px
間隙寬度 30px
(一個列的每邊分別 15px)
30px
(一個列的每邊分別 15px)
30px
(一個列的每邊分別 15px)
30px
(一個列的每邊分別 15px)
可嵌套 Yes Yes Yes Yes
偏移量 Yes Yes Yes Yes
列排序 Yes Yes Yes Yes

基本的網格結構

<div class="container">
   <div class="row">
      <div class="col-*-*"></div>
      <div class="col-*-*"></div>      
   </div>
   <div class="row">...</div>
</div>
<div class="container">....

讓我們來看幾個簡單的網格實例:

實例:堆疊的水平

<div class="container">
   <h1>Hello, world!</h1>
   <div class="row">
      <div class="col-md-6"  style="background-color: #dedef8; box-shadow: 
         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
      </div>
      <div class="col-md-6" style="background-color: #dedef8;box-shadow: 
         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
   </div>
</div>

實例:中型和大型設備

現在 Bootstrap 在中型設備中,會查找帶有 md 的類,並使用它們。在大型設備中,會查找帶有 lg 的類,並使用它們。

Bootstrap柵格的column對應的類名形如.col-xx-y。y是數字,表示該元素的寬度佔據12列中的多少列。而xx只有特定的幾個值可供選擇,分別是xs、sm、md、lg,它們就是斷點類型。

<div class="container">
   <h1>Hello, world!</h1>
   <div class="row">
      <div class="col-md-6 col-lg-4"  style="background-color: #dedef8; box-shadow: 
         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
      </div>
      <div class="col-md-6 col-lg-8" style="background-color: #dedef8;box-shadow: 
         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
   </div>
</div>

實例:手機、平板電腦、臺式電腦

在手機上,它將是左邊 25% 右邊 75% 的佈局。在平板電腦上,它將是 50%/50% 的佈局。在大型視口的設備上,它將是 33%/66% 的佈局。

<div class="container">
   <h1>Hello, world!</h1>
   <div class="row">
      <div class="col-sm-3 col-md-6 col-lg-8"  style="background-color: #dedef8; box-shadow: 
         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
      </div>
      <div class="col-sm-9 col-md-6 col-lg-4" style="background-color: #dedef8;box-shadow: 
         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
   </div>
</div>

響應式的列重置

以下實例包含了4個網格,但是我們在小設備瀏覽時無法確定網格顯示的位置。
爲了解決這個問題,使用 可以使用 .clearfix class和 響應式實用工具來解決

<div class="container">
   <div class="row" >
      <div class="col-xs-6 col-sm-3" 
         style="background-color: #dedef8;
         box-shadow: inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
      </div>
      <div class="col-xs-6 col-sm-3" 
         style="background-color: #dedef8;box-shadow: 
         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
      </div>
      <div class="clearfix visible-xs"></div>
      <div class="col-xs-6 col-sm-3" 
         style="background-color: #dedef8;
         box-shadow:inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
      </div>
      <div class="col-xs-6 col-sm-3" 
         style="background-color: #dedef8;box-shadow: 
         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
      </div>
   </div>
</div>

偏移列

爲了在大屏幕顯示器上使用偏移,請使用 .col-md-offset-* 類。這些類會把一個列的左外邊距(margin)增加 * 列,其中 * 範圍是從 1 到 11。

<div class="container">
   <h1>Hello, world!</h1>
   <div class="row" >
      <div class="col-xs-6 col-md-offset-3" 
         style="background-color: #dedef8;box-shadow: 
         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
         <p>Lorem ipsum dolor sit amet, consectetur adipisicing 
            elit.
         </p>
      </div>
   </div>
</div>

嵌套列

爲了在內容中嵌套默認的網格,請添加一個新的 .row,並在一個已有的 .col-md-* 列內添加一組 .col-md-* 列。被嵌套的行應包含一組列,這組列個數不能超過12(其實,沒有要求你必須佔滿12列)。

<div class="container">
   <div class="row">
      <div class="col-md-3" style="background-color: #dedef8;box-shadow: 
         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
         <h4>第一列</h4>
      </div>
      <div class="col-md-9" style="background-color: #dedef8;box-shadow: 
         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
         <h4>第二列 - 分爲四個盒子</h4>
         <div class="row">
            <div class="col-md-6" style="background-color: #B18904;
               box-shadow: inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
            </div>
            <div class="col-md-6" style="background-color: #B18904;
               box-shadow: inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
            </div>
         </div>
         <div class="row">
            <div class="col-md-6" style="background-color: #B18904;
               box-shadow: inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
            </div>   
            <div class="col-md-6" style="background-color: #B18904;
               box-shadow: inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
            </div>
         </div>
      </div>
   </div>
</div>

列排序

使用 .col-md-push-* 和 .col-md-pull-* 類來互換這兩列的順序

<div class="container">
   <div class="row">
      <p>排序前</p>
      <div class="col-md-4" style="background-color: #dedef8;
         box-shadow: inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
         我在左邊
      </div>
      <div class="col-md-8" style="background-color: #dedef8;
         box-shadow: inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
         我在右邊
      </div>
   </div><br>
   <div class="row">
      <p>排序後</p>
      <div class="col-md-4 col-md-push-8" 
         style="background-color: #dedef8;
         box-shadow: inset 1px -1px 1px #444, 
         inset -1px 1px 1px #444;">
         我在左邊
      </div>
      <div class="col-md-8 col-md-pull-4" 
         style="background-color: #dedef8;
         box-shadow: inset 1px -1px 1px #444, 
         inset -1px 1px 1px #444;">
         我在右邊
      </div>
   </div>
</div>




























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章