使用CSS實(shí)現(xiàn)柵格系統(tǒng)布局

使用CSS實(shí)現(xiàn)柵格布局

柵格系統(tǒng)暴露給開(kāi)發(fā)者的概念只有行(Row)和列(Column)果漾,但其內(nèi)部實(shí)現(xiàn)還是CSS布局的應(yīng)用球切,實(shí)現(xiàn)一響應(yīng)式的柵格布局我們可以使用css grid, Flextbox, 或者float,目前而言绒障,為了瀏覽器兼容吨凑,我們選擇使用float布局來(lái)實(shí)現(xiàn)柵格系統(tǒng)

一個(gè)柵格系統(tǒng)主要包含四部分 1. Container(容器) 2.Row(行) 3. Column(列) 4. Gutter(列間距)

首先,我們來(lái)定義Container

/* 容器樣式設(shè)置 */  
.container, 
.container-fluid {
  padding-left: 15px;/* 設(shè)置padding是為了后面Column直接嵌套R(shí)ow預(yù)留 */
  padding-right: 15px;
  margin-left: auto;
  margin-right: auto;
}

.container *,
.container-fluid * {
    box-sizing: border-box;  
}

然后,我們來(lái)定義Row

.row {
  margin-left: -15px;
  margin-right: -15px;  /* Container設(shè)置了padding鸵钝,所以Row需要設(shè)置-margin讓Row占滿(mǎn)Container的寬度 */
}

.row:after { /* float會(huì)引起父元素的高度塌陷糙臼,所以要使用一些clearfix技巧來(lái)清除浮動(dòng) */
  content: "";
  display: table;
  clear: both;
}       

接下來(lái),我們來(lái)定義Column恩商,同時(shí)要考慮Gutter的設(shè)置

 [class*='col-'] {
   float: left;
   min-height: 1px; 
   padding: 15px;  /* Gutter的設(shè)置 同時(shí)和前面Container設(shè)置的一樣变逃,所以Column里面可以直接嵌套R(shí)ow,而不需要Container */
   border: 1px solid #F6A1A1;
   background-color: #FFDCDC;
}

這里怠堪,我們定義每個(gè)單元列為Container的1/12揽乱,SASS代碼如下:

@for $i from 1 through 12 {
  .col-#{$i} {
    width: $i/12 * 100%;
  }
}

編譯后的css

.col-1 {
    width: 8.33333%;
}

.col-2 {
    width: 16.66667%;
}

.col-3 {
    width: 25%;
}

.col-4 {
    width: 33.33333%;
}

.col-5 {
    width: 41.66667%;
}

.col-6 {
    width: 50%;
}

.col-7 {
    width: 58.33333%;
}

.col-8 {
    width: 66.66667%;
}

.col-9 {
    width: 75%;
}

.col-10 {
    width: 83.33333%;
}

.col-11 {
    width: 91.66667%;
}

.col-12 {
    width: 100%;
}

到這里,我們就實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的12列柵格系統(tǒng)

demo---柵格系統(tǒng)

響應(yīng)式

然后我們來(lái)通過(guò)media query實(shí)現(xiàn)帶響應(yīng)式的柵格系統(tǒng)

/* 小屏幕 平板等 屏幕寬度大于等于768px */
@media (min-width: 768px) {
  .col-sm-1 {
    width: 8.33333%;
  }
  .col-sm-2 {
    width: 16.66667%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-4 {
    width: 33.33333%;
  }
  .col-sm-5 {
    width: 41.66667%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-7 {
    width: 58.33333%;
  }
  .col-sm-8 {
    width: 66.66667%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-10 {
    width: 83.33333%;
  }
  .col-sm-11 {
    width: 91.66667%;
  }
  .col-sm-12 {
    width: 100%;
  }
}
/* 中等屏幕 桌面顯示器等 屏幕寬度大于等于992px */

@media (min-width: 992px) {
  .col-md-1 {
    width: 8.33333%;
  }
  .col-md-2 {
    width: 16.66667%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-4 {
    width: 33.33333%;
  }
  .col-md-5 {
    width: 41.66667%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-7 {
    width: 58.33333%;
  }
  .col-md-8 {
    width: 66.66667%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-10 {
    width: 83.33333%;
  }
  .col-md-11 {
    width: 91.66667%;
  }
  .col-md-12 {
    width: 100%;
  }
}
/* 大屏幕 大桌面顯示器等 屏幕寬度大于等于1200px */

@media (min-width: 1200px) {
  .col-lg-1 {
    width: 8.33333%;
  }
  .col-lg-2 {
    width: 16.66667%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-4 {
    width: 33.33333%;
  }
  .col-lg-5 {
    width: 41.66667%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-7 {
    width: 58.33333%;
  }
  .col-lg-8 {
    width: 66.66667%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-10 {
    width: 83.33333%;
  }
  .col-lg-11 {
    width: 91.66667%;
  }
  .col-lg-12 {
    width: 100%;
  }
}

demo---帶響應(yīng)式的柵格系統(tǒng)

*參考
The Subtle Magic Behind Why the Bootstrap 3 Grid Works

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末粟矿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呵萨,老刑警劉巖某宪,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異掏秩,居然都是意外死亡或舞,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)蒙幻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嚷那,“玉大人,你說(shuō)我怎么就攤上這事杆煞∥嚎恚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵决乎,是天一觀(guān)的道長(zhǎng)队询。 經(jīng)常有香客問(wèn)我,道長(zhǎng)构诚,這世上最難降的妖魔是什么蚌斩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮范嘱,結(jié)果婚禮上送膳,老公的妹妹穿的比我還像新娘。我一直安慰自己丑蛤,他們只是感情好叠聋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著受裹,像睡著了一般碌补。 火紅的嫁衣襯著肌膚如雪虏束。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天厦章,我揣著相機(jī)與錄音镇匀,去河邊找鬼。 笑死袜啃,一個(gè)胖子當(dāng)著我的面吹牛汗侵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播群发,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼晃择,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了也物?” 一聲冷哼從身側(cè)響起宫屠,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎滑蚯,沒(méi)想到半個(gè)月后浪蹂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡告材,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年坤次,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斥赋。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缰猴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出疤剑,到底是詐尸還是另有隱情滑绒,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布隘膘,位于F島的核電站疑故,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏弯菊。R本人自食惡果不足惜纵势,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望管钳。 院中可真熱鬧钦铁,春花似錦、人聲如沸才漆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)栽烂。三九已至躏仇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間腺办,已是汗流浹背焰手。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怀喉,地道東北人书妻。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像躬拢,于是被迫代替她去往敵國(guó)和親躲履。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容