將Bootstrap柵格系統(tǒng)中某一列定寬會發(fā)生什么

大家都知道Bootstrap中的列會均分一行的寬度。

 <div class="container">
      <div class="row">
            <div class="col-lg-4"></div>
            <div class="col-lg-4"></div>
            <div class="col-lg-4"></div>
      </div>
 </div>

效果如下圖:


Paste_Image.png

如果container容器給定的寬度是600px,再給第一個col-lg-4的寬度大于200px,會發(fā)生什么呢?

Paste_Image.png

后面兩個列會因?qū)挾炔粔蚨粩D下去,這是因為Bootstrap的所有列采用浮動布局,如果某一列定寬而導致改行排列不下,后面的列便會被擠下去。
在此舉一反三,研究一下Bootstrap的柵格布局原理


Paste_Image.png

在Bootstrap源碼中,針對大屏設(shè)備1200px,container寬度設(shè)計為1170px是為了保證1200px寬的設(shè)備兩邊留白,使其不至于占滿屏幕。
Bootstrap的柵格系統(tǒng)是一個三層結(jié)構(gòu),除了外圍的container和內(nèi)部的column,中間還有一個夾層row,并且Bootstrap要求所有的column必須包含在row里面,這是為什么呢?
Bootstrap將所有元素的盒模型設(shè)置為了border-box

.row {
  margin-right: -15px;
  margin-left: -15px;
}
* {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}
因此container寬度為1170px,減去左右共30px的padding,于是container的內(nèi)容寬度就只剩1140px,這下所有col柵格的百分比乘的都是1140而不是1170,為解決此問題,Bootstrap在container中新增了一個夾層row,通過使用負的margin增加row的寬度至1170px。這里用到了盒模型尺寸的計算原理:塊元素左右外邊距、左右border、左右內(nèi)邊距和width這七個值之和必須等于包含塊的content width。row的包含塊container的content width為1140px,因此對于row而言,就存在如下等量關(guān)系:

-15px+0+0+width+0+0+(-15px)= 1140

于是row的width就自動擴展到1170px了。

這樣是不是顯得有點多此一舉呢?既然container左右兩邊都有15px的外邊距了,為什么還要設(shè)計15px的內(nèi)邊距?如果沒有這個內(nèi)邊距,不就不需要額外添一個夾層row了嗎?
這里就是Bootstrap設(shè)計的精巧之處:因為柵格之間需要間隔,因此每個column柵格都設(shè)置了15px的padding
這意味著每個column實際上也可以看成一個container!我們可以在任意一個column內(nèi)再嵌套一個柵格系統(tǒng),而無需再添加container,只需添加一個row即可,不要將row理解成“行”,它就是一個包含塊而已。這樣的三層結(jié)構(gòu)使得Bootstrap成為了一個可以無限嵌套的響應(yīng)式系統(tǒng),每一個柵格都可以看做一個獨立的系統(tǒng),container只不過是那個最大的柵格而已。

另外,Bootstrap柵格系統(tǒng)預(yù)設(shè)的數(shù)值,如列數(shù)、槽寬以及媒體查詢閾值都是可以修改的??啥ㄖ苹撬袃?yōu)秀框架的另一個共同品質(zhì)。

列排序與列偏移

Bootstrap將所有列的position都設(shè)成了relative,就在于可對列進行定位或排序,比如要將某一個列定位到12分之3處(即從第三、四列交界處開始),可以設(shè)置left:25%或者right:75%。Bootstrap已經(jīng)預(yù)設(shè)好了相應(yīng)的類名:

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

列偏移的不同之處在于使用margin,而被margin擠占的區(qū)域沒辦法安放其它的列。

 .col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-lg-offset-0 {
    margin-left: 0;
  }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 大家好,我是IT修真院成都分院第7期的學員韓建名,一枚正直純潔善良的WEB前端程序員。 1.背景介紹 Bootst...
    inh_閱讀 861評論 0 2
  • 今天給大家分享一下,深度思考中的知識點——如何使用BOOTSTRAP 柵格系統(tǒng)? 一、背景介紹 今天小課堂分享的內(nèi)...
    南木小屋閱讀 897評論 0 3
  • 大家好,我是IT修真院成都分院第一期的學員常開洋,一枚正直純潔善良的web前端程序員 今天給大家分享一下,修真院官...
    常開洋閱讀 461評論 1 0
  • 大家好,我是IT修真院北京分院web第31期學員金立劍 【js-2】BootStrap柵格系統(tǒng) 分享人:金立劍 目...
    bqzhzqay閱讀 916評論 0 1
  • 歲月如風,轉(zhuǎn)瞬往昔。十月在繁復和失落的情緒中慢慢的變成回憶的滄海中潮起潮落的孤島,十一月在些許情緒隱隱心間中姍姍而...
    楓塵垚墨閱讀 196評論 0 1

友情鏈接更多精彩內(nèi)容