Bootstrap 柵格系統的精妙之處


節選翻譯自The Subtle Magic Behind Why the Bootstrap 3 Grid Works

從接觸 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 的柵格系統的最巧妙的地方!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM