本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
引言
之前学习了bootstarp框架中的布局容器,了解到布局容器对bootstarp框架来说是非常重要的。此外,与之形影不离还有bootstarp框架中的栅格系统。今天就来谈一谈bootstarp框架中的栅格系统,了解它是如何与布局容器配合使用的。
解决方案
栅格系统英文为“grid systems”,也有人翻译为“网格系统”,它是指将页面布局划分为等宽的列,然后通过列数的定义来模块化布局。栅格系统所谓的栅格就是和小时候练字的方格本子是非常相似的。但栅格系统也有它的特别之处,它的大小并不是固定的。它会随着页面的大小比例随之改变,就像最开始学习网页的布局一样,并不是定宽定长的,和网页里的百分比布局是比较相似的。这样,栅格系统就能够与更多的移动设备相匹配。
Bootstarp提供了套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。也就是说在小屏下或者大屏下都会划分为12列,前面的.container布局容器划也会分为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-* 不存在, 也影响大屏幕设备。
结语
今天学习了栅格系统的原理,对栅格系统有了初步的了解和认识。但在实际运用的时候还需要对bootstrap框架的源码进行一些学习,特别是其中css的部分,对于布局来说是非常重要的。
END
主 编 | 王文星
责 编 | 桂 军
where2go 团队