1. 程式人生 > >bootstrap詳解-柵格佈局

bootstrap詳解-柵格佈局

1、列組合

列組合簡單理解就是更改數字來合併列(原則:列總和數不能超12),有點類似於表格的colspan屬性,例如:

<div class="container">
  <div class="row">
    <div class="col-md-<span style="color: rgb(178, 34, 34);">4</span>">.col-md-4</div>
    <div class="col-md-<span style="color: rgb(178, 34, 34);">8</span>">.col-md-8</div>
  </div>
  <div class="row">
    <div class="col-md-<span style="color: rgb(178, 34, 34);">4</span>">.col-md-4</div>
    <div class="col-md-<span style="color: rgb(178, 34, 34);">4</span>">.col-md-4</div>
    <div class="col-md-<span style="color: rgb(178, 34, 34);">4</span>">.col-md-4</div>
  </div>
  <div class="row">
    <div class="col-md-<span style="color: rgb(178, 34, 34);">3</span>">.col-md-3</div>
    <div class="col-md-<span style="color: rgb(178, 34, 34);">6</span>">.col-md-6</div>
    <div class="col-md-<span style="color: rgb(178, 34, 34);">3</span>">.col-md-3</div>
 </div>
</div>

使用上面的結構,你將看到下圖的效果:


實現列組合方式非常簡單,只涉及兩個CSS兩個特性:浮動寬度百分比。在bootstrap.css檔案的第1088行~1126行:

/*確保所有列左浮動*/

.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left;
 }

/*定義每個列組合的寬度(使用的百分比)*/

  .col-md-12 {
    width: 100%;
  }
  .col-md-11 {
    width: 91.66666667%;
  }
  .col-md-10 {
    width: 83.33333333%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-8 {
    width: 66.66666667%;
  }
  .col-md-7 {
    width: 58.33333333%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-5 {
    width: 41.66666667%;
  }
  .col-md-4 {
    width: 33.33333333%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-2 {
    width: 16.66666667%;
  }
  .col-md-1 {
    width: 8.33333333%;
  }

5、列偏移

有的時候,我們不希望相鄰的兩個列緊靠在一起,但又不想使用margin或者其他的技術手段來。這個時候就可以使用列偏移(offset)功能來實現。使用列偏移也非常簡單,只需要在列元素上新增類名“col-md-offset-*”(其中星號代表要偏移的列組合數),那麼具有這個類名的列就會向右偏移。例如,你在列元素上新增“col-md-offset-4”,表示該列向右移動4個列的寬度。

<div class="container">
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-2 <span style="color: rgb(178, 34, 34);"><strong>col-md-offset-4</strong></span>">列向右移動四列的間距</div>
<div class="col-md-2">.col-md-3</div>
</div>
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 <span style="color: rgb(178, 34, 34);"><strong>col-md-offset-4</strong></span>">列向右移動四列的間距</div>
</div>
</div>

如上面的示例程式碼,得到的效果如下


實現原理非常簡單,就是利用十二分之一(1/12)的margin-left。然後有多少個offset,就有多少個margin-left。在bootstrap.css中第1205行~1241行所示:

  .col-md-offset-12 {
   margin-left: 100%;
}
  .col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-md-offset-9 {
    margin-left: 75%;
  }
  .col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-md-offset-6 {
    margin-left: 50%;
  }
  .col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-md-offset-3 {
    margin-left: 25%;
  }
  .col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-md-offset-0 {
    margin-left: 0;
  }

注意:

不過有一個細節需要注意,使用”col-md-offset-*”對列進行向右偏移時,要保證偏移列的總數不超過12,不然會致列斷行顯示,如:

<div class="row">
  <div class="col-md-<span style="color: rgb(178, 34, 34);">3</span>">.col-md-3</div>
  <div class="col-md-<span style="color: rgb(178, 34, 34);">3</span> <strong>col-md-offset-<span style="color: rgb(178, 34, 34);">3</span></strong>">col-md-offset-3</div>
  <div class="col-md-<span style="color: rgb(178, 34, 34);">4</span>">col-md-4</div>
</div>

上面程式碼中列和偏移列總數為3+3+3+4 = 13>12,所以發生了列斷行。

如上面的示例程式碼,得到的效果如下


6、列排序

 列排序其實就是改變列的方向,就是改變左右浮動,並且設定浮動的距離。在Bootstrap框架的網格系統中是通過新增類名“col-md-push-*”和“col-md-pull-*” (其中星號代表移動的列組合數)。

我們來看一個簡單的示例:

<div class="container">
  <div class="row">
    <div class="col-md-4">.col-md-4</div>
    <div class="col-md-8">.col-md-8</div>
  </div>
</div>

預設情況之下,上面的程式碼效果如下:


“col-md-4”居左,“col-md-8”居右,如果要互換位置,需要將“col-md-4”向右移動8個列的距離,也就是8個offset ,也就是在“<div class=“col-md-4”>”新增類名“col-md-push-8”,呼叫其樣式。

也要將“col-md-8”向左移動4個列的距離,也就是4個offset,在“<div class=”col-md-8”>”上新增類名“col-md-pull-4”:


Bootstrap僅通過設定left和right來實現定位效果。在boostrap.css檔案的第1127行~第1204行可以看到具體的程式碼:

.col-md-pull-12 {
    right: 100%;
  }
  .col-md-pull-11 {
    right: 91.66666667%;
  }
  .col-md-pull-10 {
    right: 83.33333333%;
  }
  .col-md-pull-9 {
    right: 75%;
  }
  .col-md-pull-8 {
    right: 66.66666667%;
  }
  .col-md-pull-7 {
    right: 58.33333333%;
  }
  .col-md-pull-6 {
    right: 50%;
  }
  .col-md-pull-5 {
    right: 41.66666667%;
  }

  .col-md-pull-4 {
    right: 33.33333333%;
  }

  .col-md-pull-3 {
    right: 25%;
  }

  .col-md-pull-2 {
    right: 16.66666667%;
  }
  .col-md-pull-1 {
    right: 8.33333333%;
  }
  .col-md-pull-0 {
    right: 0;
  }

  .col-md-push-12 {
    left: 100%;
  }
  .col-md-push-11 {
    left: 91.66666667%;
  }
  .col-md-push-10 {
    left: 83.33333333%;
  }
  .col-md-push-9 {
    left: 75%;
  }
  .col-md-push-8 {
    left: 66.66666667%;
  }
  .col-md-push-7 {
    left: 58.33333333%;
  }
  .col-md-push-6 {
    left: 50%;
  }
  .col-md-push-5 {
    left: 41.66666667%;
  }
  .col-md-push-4 {
    left: 33.33333333%;
  }
  .col-md-push-3 {
    left: 25%;
  }
  .col-md-push-2 {
    left: 16.66666667%;
  }
  .col-md-push-1 {
    left: 8.33333333%;
  }
  .col-md-push-0 {
    left: 0;
}