Bootstrap柵格系統的精妙之處

從接觸 Bootstrap 已經有很長時間了,給人的感覺是快速,簡單,易上手,其中柵格系統是一個亮點:

一直感覺像 CSS 柵格系統之類的東西拿過來用就好了,不用深究背後的原理。直到有一天你發現簡單的套用在稍複雜的頁面上出現問題,間隔啊,內外邊距啊,哪都不對勁兒。

當然會有這樣的過程,然後隨着知識的積累,可以去讀一些 Bootstrap 的源碼,結合文檔會發現一些不是很理解的地方:

Rows must be placed within a .Container (fixed-width) or .container-fluid (full-width) for proper alignment and padding.

“行(row)”必須包含在 .container (固定寬度)或 .container-fluid (100% 寬度)中,以便爲其賦予合適的排列(aligment)和內補(padding)。

CONTAINER

Container 有兩個作用:

  1. 在隨時可能的寬度變化(響應式)中提供寬度限制。當頁面寬度變化,container 的寬度也隨之變化。並且其中的 column 的寬度是基於百分比,所以他們的值不需要變化。

  2. 提供一個水平方向的 padding,使其內部的內容不會接觸到瀏覽器的邊界,大小爲15px,就是圖片中粉紅色的部分,作用會在下面說。

注意,不需要也不應該在 container 中嵌套另一個 container。
15px-padding

ROW

Row 是 column 直接存在的容器,按照文檔描述 row 中最多可有12個 column,不過可以通過 nesting 的方式靈活擴展。同時作爲都是左浮動的 column 的 wrapper,自帶 clearfix 的性質。

同時 row 還有一個很特殊的地方,就是左右各有 -15px 的 margin,就是圖片中的藍色部分。這樣也就抵消了上面提到的 container 中15px的 padding,那麼爲什麼要這麼折騰呢?接着看往下讀。

注意:千萬記住要把 row 放到 container 的內部,這樣才能保證正常。
-15px-margin

COLUMN

注意啦,每個column 也會有15px的水平方向的 padding,也就是圖片中黃色的部分,唉,先別急,會明白的。還記得上面提到的 row 的作用嗎,colunmn 只能在 row 中生存,由於 row 的 margin 爲-15px,那麼位於兩邊的 column 就碰到了 container 的邊界。但是 colunmn 本身又有 15px 的 padding 使得它其中的內容並不會碰到 container,同時 不同column的內容之間就有了30px的槽。結合圖片看一下就一目瞭然了。

注意:一定要把 column 放到 row 裏使用。
column

NESTING

當把上面一系列的 container, row, column 都設置好,就可以通過 nesting 擴展它的柵格系統了,也就是在 column 中直接嵌套 row,而不需要再套一層 container:
nesting

還記得 container 和 column 都有15px的 padding 嗎,當 nesting 的時候 column 的作用也相當於 container 了,這樣就可以實現任意的嵌套了。
nesting

這正是 Bootstrap 的柵格系統的最巧妙的地方!

文章來源http://segmentfault.com/a/1190000000743553

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