Bootstrap栅格化系统设计原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bootstrap栅格化系统设计原理相关的知识,希望对你有一定的参考价值。

参考技术A 栅格实现原理

•把网页总宽度平分为12分,开发人员可以自由按分组合,以便开发出简洁方便的程序

•仅仅通过定义容器大小、平分12分,再调整内外边距,最后结合媒体查询,就制作出强大的响应式栅格系统

•栅格系统用于通过一系列的行(row)与列(column)的组合来创建页面布局,你的内容就可以放入这些创建好的布局中。

下面就介绍一下 Bootstrap 栅格系统的工作原理:

•“行(row)”必须包含在 .container (固定宽度)或 .container-fluid (100% 宽度)中,以便为其赋予合适的排列(aligment)和内补(padding)。

•通过“行(row)”在水平方向创建一组“列(column)”。

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

•类似 .row 和 .col-xs-4 这种预定义的类,可以用来快速创建栅格布局。Bootstrap 源码中定义的 mixin 也可以用来创建语义化的布局。

•通过为“列(column)”设置 padding 属性,从而创建列与列之间的间隔(gutter)。通过为 .row 元素设置负值 margin 从而抵消掉为 .container 元素设置的 padding,也就间接为“行(row)”所包含的“列(column)”抵消掉了padding。

•负值的 margin就是下面的示例为什么是向外突出的原因。在栅格列中的内容排成一行。

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

•如果一“行(row)”中包含了的“列(column)”大于 12,多余的“列(column)”所在的元素将被作为一个整体另起一行排列。

栅格类适用于与屏幕宽度大于或等于分界点大小的设备 , 并且针对小屏幕设备覆盖栅格类。 因此,在元素上应用任何 .col-md-* 栅格类适用于与屏幕宽度大于或等于分界点大小的设备 , 并且针对小屏幕设备覆盖栅格类。 因此,在元素上应用任何 .col-lg-* 不存在, 也影响大屏幕设备。

(原理:把我们的屏幕大小的宽度平分成12个格,每一格的宽度和整个屏幕分辨率是有关系的,如果整个屏幕分辨率越大那么这12格的每一格的宽度就大,是按比例来算出的,而且这12格的layout是水平排列的。)

比如,我们定义一个div,我们不指定这个div的宽度是多少像素或者占多少百分比,我们是指定这个div占12格中的几格,我们这个div占12格中的8格,不同的分辨率底下它始终是占12格中的8格。系统会根据屏幕分辨率的大小,自动拆成12格,每一格大小根据屏幕分辨率自动在变。这样的话在各浏览器或分辨率下都可以兼容我们这个8:4这个比例。

Bootstrap中的栅格化布局

bootstarp的栅格化布局使得我们布局简单,我们只需要利用.container/.container-fluid,.row即可实现,其下是一个例子:

<div class="container-fluid">
  <h3 class="text-primary text-center">jQuery Playground</h3>
  <div class="row">
    <div class="col-xs-6">
      <div class="well">
      </div>
    </div>
    <div class="col-xs-6">
      <div class="well">
      </div>
    </div>
  </div>
</div>

 

上述例子是一个栅格化布局的简单利用,那么是怎么实现的呢?以.container-fluid为例

.container-fluid 样式定义如下:

.container-fluid {
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
}

其主要作用是实现内容的居中,而其中的padding是为了实现内容不会从浏览器的边界开始,那么接下来就是.row

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

貌似.row的margin值抵消了.container-fluid的margin值,内容还是从边界开始,这是为什么呢,这和其嵌套有关,先看下其列,以col-xs-6为例,

.col-xs-6 {
  position: relative;
  min-height: 1px;
  padding-right: 15px;
  padding-left: 15px;
}
.col-xs-6 {
  width: 50%;
}

其中拥有padding值,使得内容并不会触碰到container-fluid,并且可以看出,每两个列之间的间距为30px;然后就来解答为什么.container-fluid和.row有padding与margin值,这是因为我们可以在一个列中在利用.row 进行栅格化布局,这样,就无需再加上.container样式。

以上是关于Bootstrap栅格化系统设计原理的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap响应式栅格系统设计

bootstrap怎么给栅格上色

如何使用栅格化系统构建响应式设计

响应式网站设计---Bootstrap

bootstrap设计理念

Bootstrap:栅格系统