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栅格化系统设计原理的主要内容,如果未能解决你的问题,请参考以下文章