Bootstrap響應(yīng)式柵格布局實(shí)現(xiàn)方法

柵格系統(tǒng)的原理
  

柵格系統(tǒng)原理

假設(shè):Flowline的寬度為W彼妻,column的寬度為c贵试,Gutter的寬度為g,Margin的寬度為m,柵格列數(shù)為N
  W = c*N + g*(N-1) + 2m;g的寬度通常為m的兩倍呆馁,所以:
  W = (c+g) * N;把c+g記為C毁兆,得:
  W = C * N;
大部分的柵格系統(tǒng)都是此公式的變體浙滤。

Bootstrap的柵格系統(tǒng)
下面我們將一起來(lái)看一下常見的柵格布局的設(shè)計(jì)和bootstrap中的設(shè)計(jì)實(shí)現(xiàn)。BootStrap中合理的使用柵格布局气堕,必須將列放入row中纺腊,而row必須放入container中。container類在布局中主要有兩個(gè)作用:

  1. 在不同的寬度區(qū)間內(nèi)(響應(yīng)式斷點(diǎn))提供寬度限制茎芭。當(dāng)寬度變化時(shí)揖膜,采用不同的寬度。
  2. 提供一個(gè)padding梅桩,阻止內(nèi)部?jī)?nèi)容觸碰到瀏覽器邊界壹粟。

Bootstrap中使用padding代替上文中的margin。大小為15px宿百,如下圖所示趁仙,粉紅色為padding大小洪添。


Bootstrap container

Row是column的容器,每個(gè)row中的column之和必須為12雀费,不過(guò)我們可以通過(guò)嵌套的方式擴(kuò)展干奢。Row的左右margin都為-15px,用來(lái)抵消container中的padding盏袄,如下圖藍(lán)色部分所示:


Boostrap row

row的這種設(shè)計(jì)主要為了方便嵌套律胀,后文中會(huì)提到。
Colomn是柵格系統(tǒng)的主角貌矿,每個(gè)column左右padding都為15px,上文中row的負(fù)margin抵消了container的padding罪佳,所以為每個(gè)column設(shè)置padding就是為了防止內(nèi)容直接觸碰邊界逛漫,同時(shí)不同的column之間擁有30px的卡槽(Gutter)。如下圖黃色部分所示:

現(xiàn)在想想上文中提到的公式:W = C * N;
上文提到row的負(fù)margin設(shè)計(jì)主要為了嵌套赘艳,如果要在column中嵌套column首先要把被嵌套的column放到row中酌毡,把row放到作為容器的column中,而不需要在放置一個(gè)container蕾管。如下圖中藍(lán)色所示枷踏,是放入column中的row的負(fù)margin區(qū)域。



現(xiàn)在將被嵌套的column放入row中掰曾,如下圖所示旭蠕,上層column便是起到了container的作用。

如此我們便看到了Bootstrap柵格系統(tǒng)的精妙所在旷坦。

以上為博客引用內(nèi)容掏熬,原博客地址為:CSS:談?wù)剸鸥癫季?/a>

自己實(shí)現(xiàn)響應(yīng)式的柵格系統(tǒng)布局:

<!DOCTYPE html>
<html lang="en">
  <head>    
    <meta charset="UTF-8">    
    <title>Bootstrap柵格系統(tǒng)</title>
  </head>
  <style type="text/css">    
    @media screen and (max-width: 768px){        
      .container{            
        width: auto;        
      }        
      .col-md-1{            
        width: auto;            
        padding: 0px 15px;        
      }        
      .col-md-3{            
        width: auto;            
        padding: 0px 15px;        
      }    
  }    
  @media screen and (max-width: 992px) and (min-width: 768px){                 
    .container{            
      width: 750px;        
    }        
    .col-md-1{            
      width: auto;            
      padding: 0px 15px;        
    }        
    .col-md-3{            
      width: auto;            
      padding: 0px 15px;        
    }    
  }    
  @media screen and (min-width: 992px) and (max-width: 1200px){        
    .container{            
      width: 970px;        
    }        
    .col-md-3{            
      width: 25%;            
      float: left;            
      padding: 0px 15px;        
    }        
    .col-md-1{            
      width: 8.33333333%;            
      float: left;            
      padding: 0px 15px;        
    }    
  }    
  @media screen and (min-width: 1200px){        
    .container{            
      width: 1170px;        
    }        
    .col-md-3{            
      width: 25%;            
      float: left;            
      padding: 0px 15px;        
    }        
    .col-md-1{            
      width: 8.33333333%;            
      float: left;            
      padding: 0px 15px;        
    }    
   }    
  *{        
    box-sizing: border-box;    
  }    
  .container{        
    padding: 0px 15px;        
    margin: 0 auto;    
  }    
  .container:after{        
    clear: both;        
    display: block;        
    content: "";    
  }    
  .row{        
    margin-left: -15px;        
    margin-right: -15px;    
  }    
  .row:after{        
    display: block;        
    clear: both;        
    content: "";    
  }
</style>
<body>
  <div class="container">    
    <div class="row">        
      <div class="col-md-1">col-md-1</div>        
      <div class="col-md-1">col-md-1</div>        
      <div class="col-md-1">col-md-1</div>        
      <div class="col-md-1">col-md-1</div>        
      <div class="col-md-1">col-md-1</div>        
      <div class="col-md-1">col-md-1</div>        
      <div class="col-md-1">col-md-1</div>        
      <div class="col-md-1">col-md-1</div>        
      <div class="col-md-1">col-md-1</div>        
      <div class="col-md-1">col-md-1</div>        
      <div class="col-md-1">col-md-1</div>        
      <div class="col-md-1">col-md-1</div>    
    </div>    
    <div class="row">        
      <div class="col-md-3">col-md-3</div>        
      <div class="col-md-3">col-md-3</div>        
      <div class="col-md-3">col-md-3</div>        
      <div class="col-md-3">col-md-3</div>    
    </div>
   </div>
</body>
</html>

實(shí)現(xiàn)效果

橫向布局
縱向布局
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市秒梅,隨后出現(xiàn)的幾起案子旗芬,更是在濱河造成了極大的恐慌,老刑警劉巖捆蜀,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疮丛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡辆它,警方通過(guò)查閱死者的電腦和手機(jī)誊薄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)娩井,“玉大人暇屋,你說(shuō)我怎么就攤上這事《蠢保” “怎么了咐刨?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵昙衅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我定鸟,道長(zhǎng)而涉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任联予,我火速辦了婚禮啼县,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沸久。我一直安慰自己季眷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布卷胯。 她就那樣靜靜地躺著子刮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窑睁。 梳的紋絲不亂的頭發(fā)上挺峡,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音担钮,去河邊找鬼橱赠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛箫津,可吹牛的內(nèi)容都是我干的狭姨。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼鲤嫡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼送挑!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起暖眼,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤惕耕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后诫肠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體司澎,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年栋豫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了挤安。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丧鸯,死狀恐怖蛤铜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤围肥,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布剿干,位于F島的核電站,受9級(jí)特大地震影響穆刻,放射性物質(zhì)發(fā)生泄漏置尔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一氢伟、第九天 我趴在偏房一處隱蔽的房頂上張望榜轿。 院中可真熱鬧,春花似錦朵锣、人聲如沸谬盐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)设褐。三九已至,卻和暖如春泣刹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背犀被。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工椅您, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寡键。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓掀泳,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親西轩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子员舵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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

  • 大家好,我是IT修真院成都分院第7期的學(xué)員韓建名藕畔,一枚正直純潔善良的WEB前端程序員马僻。 1.背景介紹 Bootst...
    inh_閱讀 752評(píng)論 0 2
  • 問(wèn)答題47 /72 常見瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評(píng)論 1 92
  • Bootstrap是什么注服? 一套易用韭邓、優(yōu)雅、靈活溶弟、可擴(kuò)展的前端工具集--BootStrap女淑。GitHub上介紹 的...
    凜0_0閱讀 10,848評(píng)論 3 184
  • CSS3 媒體查詢與響應(yīng)式布局 第一章 序論 現(xiàn)今每天都有更多的手機(jī)和平板電腦問(wèn)市。消費(fèi)者能夠擁有可想象到的各種規(guī)...
    whitsats閱讀 4,872評(píng)論 0 10
  • 文|熱點(diǎn)資訊 近期袱巨,朝美關(guān)系持續(xù)緊張阁谆,很有戰(zhàn)爭(zhēng)一觸即發(fā)之勢(shì)。在此瓣窄,讓我們?cè)O(shè)想下笛厦,美國(guó)一旦對(duì)朝鮮開戰(zhàn),將產(chǎn)生怎么樣的...
    熱點(diǎn)資訊閱讀 1,489評(píng)論 0 1