bootstrap-网格系统

作者: hcxowe | 来源:发表于2016-05-13 23:46 被阅读224次

栅格系统的实现原理非常简单,仅仅是通过定义容器大小,平分12份,再调整内外边距,最后再结合媒体查询,就制作出了强大的响应式的栅格系统。Bootstrap默认的栅格系统平分为12份。

栅格系统的主要工作原理

  • 一行数据(row)必须包含在.container中,以便为其赋予合适的对齐方式和内边距(padding)。

  • 使用行(row)在水平方向创建一组列(column)。

  • 具体内容应当放置于列(column)内,而且只有列(column)可以作为行(row)的直接子元素。

  • 内置一大堆样式,可以使用像.row和.col-xs-4(占4列宽度)这样的样式来快速创建栅格布局。Bootstrap源码中定义的mixin也可以用来创建语义化的布局。

  • 通过设置padding从而创建列(column)之间的间隔。然后通过为第一列和最后一列设置负值的margin从而抵消掉padding的影响。

  • 栅格系统中的列是通过指定1到12的值来表示其跨越的范围的。例如,要让屏幕分为3个等宽的部分,可以使用3个.col-xs-4来创建。

举个栗子:

    <body>
            <div class="container">
                    <div class="row" style="background-color: green;height: 50px;">
                            <div class="col-xs-3" style="background-color: grey;height: 50px;">
                            </div>
                    </div>
            </div>
            <div class="container-fluid">
            </div>
    </body>

一般的网格布局,查看css源码1585行

.container {
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
}
@media (min-width: 768px) {
  .container {
    width: 750px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 970px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1170px;
  }
}

bs .container定好了在不同屏幕下面的宽度,750px->970px->1170px,每个容器左右内边距15px;
再看.row的样式

.row {
  margin-right: -15px;
  margin-left: -15px;
}

.row放在.container中消除了.container15px内边距带来的影响

然后再来看每一列的定义col-xx-xx

.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-right: 15px;
  padding-left: 15px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}

每一col-列都带有15px的左右内边距,左浮动排列~
.col-xx-xx使用width设置百分比宽度
col-xx-offset-xx使用margin-left进行向右偏移
col-xx-pull-xx使用right进行向左偏移
col-xx-push-xx使用left进行向右偏移

.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}
.col-xs-pull-12 {
  right: 100%;
}
.col-xs-pull-11 {
  right: 91.66666667%;
}
.col-xs-pull-10 {
  right: 83.33333333%;
}
.col-xs-pull-9 {
  right: 75%;
}
.col-xs-pull-8 {
  right: 66.66666667%;
}
.col-xs-pull-7 {
  right: 58.33333333%;
}
.col-xs-pull-6 {
  right: 50%;
}
.col-xs-pull-5 {
  right: 41.66666667%;
}
.col-xs-pull-4 {
  right: 33.33333333%;
}
.col-xs-pull-3 {
  right: 25%;
}
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}
.col-xs-push-12 {
  left: 100%;
}
.col-xs-push-11 {
  left: 91.66666667%;
}
.col-xs-push-10 {
  left: 83.33333333%;
}
.col-xs-push-9 {
  left: 75%;
}
.col-xs-push-8 {
  left: 66.66666667%;
}
.col-xs-push-7 {
  left: 58.33333333%;
}
.col-xs-push-6 {
  left: 50%;
}
.col-xs-push-5 {
  left: 41.66666667%;
}
.col-xs-push-4 {
  left: 33.33333333%;
}
.col-xs-push-3 {
  left: 25%;
}
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
.col-xs-offset-12 {
  margin-left: 100%;
}
.col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.col-xs-offset-9 {
  margin-left: 75%;
}
.col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.col-xs-offset-6 {
  margin-left: 50%;
}
.col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.col-xs-offset-3 {
  margin-left: 25%;
}
.col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.col-xs-offset-0 {
  margin-left: 0;
}

对重复代码的处理
纵观整个栅格系统的源码,从854行到1635行绝大部分代码都是重复性的。比如给4种不同的类型设置width的时候,给pull和push设置left和right的时候,以及给offset设置的margin-left时候,设置的值都一样。只是样式名称不一样。除此之外不一样的地方就只有container样式的宽度设置了。那为什么不能这样设置呢?
所有重复性的内容都放一起(在媒体查询之外),那么和媒体查询有关的就只有这一项内容了,也就是如下代码中所列的width宽度。
.col-xs-12
.col-sm-12
.col-md-12
.col-lg-12 {
width: 100%;
}
总结:这得节约多少行代码~!

相关文章

  • bootstrap-网格系统

    栅格系统的实现原理非常简单,仅仅是通过定义容器大小,平分12份,再调整内外边距,最后再结合媒体查询,就制作出了强大...

  • bootstrap-栅格布局系统-表单-组件

    一. bootstrap-全局css样式-栅格布局系统-重点难点 二. bootstrap-全局css样式-表单-...

  • Bootstrap-网格结构和基本排版

    http://v3.bootcss.com/css/1:响应式图片:如果需要让使用了 .img-responsiv...

  • 什么是栅格系统

    一、概念 1、栅格系统(grid systems),也叫“网格系统”。栅格设计系统(又称网格设计系统、标准尺寸系统...

  • bootstrap部分样式

    一. bootstrap-全局css样式-栅格布局系统 所有的行必须放在容器中.container或contain...

  • Bootstrap学习(一)入门

    Date: 2018-10-17 1、Bootstrap网格系统 Bootstrap网格系统定义: Bootstr...

  • H5-2.17bootstrap进一步应用

    开始编写bootstrap代码的,准备和导入配置文件 一. bootstrap-全局css样式-栅格布局系统 所有...

  • 网格系统(grid)

    网格系统代码网格系统测试代码 1.思路 使用row.vue和col.vue构成网格系统的基础部分 两单文件所需要的...

  • 网格系统总结:从初识到应用

    网格系统总结:从初识到应用 目录: 1.什么是网格 2.为什么要使用网格 3.网格系统中都包括什么 4.如何制作网...

  • 网格系统

    什么是网格系统? 包含了水平和垂直方向的参考线,用来合理排列内容。 最基本的网格系统由一系列水平和垂直的、彼此交叉...

网友评论

    本文标题:bootstrap-网格系统

    本文链接:https://www.haomeiwen.com/subject/piemrttx.html