栅格系统

Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。

工作原理

Bootstrap栅格系统通过一系列的行(row)与列(column)的组合来创建页面布局,你的内容就可以放入这些创建好的布局中。栅格系统的工作原理如下:

  • “行(row)”必须包含在 .container (固定宽度)或 .container-fluid (100% 宽度)中,以便获得合适的对齐方式(alignment)和内边距(padding)。
  • 通过“行(row)”在水平方向创建一组“列(column)”。
  • 内容应当放置在“列”中,并且,只有“列”可以作为行”的直接子元素。
  • 系统预定义了一些栅格类,比如 .row 和 .col-xs-4(超小屏幕下,占 4 列宽度)。可以用这些栅格类来快速创建栅格布局。同时,还提供了强大的mixin,用于生成更具语义的布局。
  • 通过为“列”设置 padding 属性,从而创建列与列之间的间隙。通过为第一个列和最后一个列设置负值 margin 来抵消 padding 的影响。
  • 通过指定1到12的值来表示列跨越的范围。比如,可以使用三个 .col-xs-4 来创建三个等宽的列。
  • 如果一“行”中包含了的“列”大于 12,多余的“列”所在的元素将被作为一个整体另起一行排列。
  • 栅格类应用于屏幕宽度大于或等于分界点大小的设备,即针对小屏幕的栅格类,对大屏幕依然起作用。比如,在一个元素上应用 .col-md-* 栅格类,它不仅会影响中等屏幕,而且如果该元素没有应用任何 .col-lg-* 类,它也会影响大屏幕设备。

栅格系统根据视口的宽度,将设备分为超小屏幕设备(xs:extra small)、小屏幕设备(sm:small)、中等屏幕设备(md:middle)、大屏幕设备(lg:large),并针对每种设备定义对应的栅格类 .col-xs、.col-sm、.col-md、.col-lg。这样做的好处是,允许使用Bootstrap的开发人员针对不同的设备,分别定义布局规则。通过下表,你可以很清楚的看到Bootstrap的栅格系统在多种屏幕的设备上是如何工作的:

  超小屏幕
手机 (<768px)
小屏幕
平板 (≥768px)
中等屏幕
桌面显示器 (≥992px)
大屏幕
大桌面显示器 (≥1200px)
栅格系统行为 总是水平排列 开始是堆叠在一起的,当大于这些阈值时将变为水平排列C
容器最大宽度 None (自动) 750px 970px 1170px
类前缀 .col-xs- .col-sm- .col-md- .col-lg-
列数 12
最大列宽 自动 ~62px ~81px ~97px
间隙宽度 30px (每列左右均有 15px)
可嵌套
列偏移
列排序

上表中不同屏幕分界点,是通过媒体查询定义的,以下是在 Less 文件中创建栅格系统中关键分界点的媒体查询:

/* 超小屏幕(手机,小于 768px) */

/* 没有媒体查询,因为这是Bootstrap 中的默认情况 */

/* 小屏幕(平板,大于等于 768px) */

@media (min-width: @screen-sm-min) { ... }

/* 中等屏幕(桌面显示器,大于等于 992px) */

@media (min-width: @screen-md-min) { ... }

/* 大屏幕(大桌面显示器,大于等于 1200px) */

@media (min-width: @screen-lg-min) { ... }

为了将 CSS 的影响限制在更小范围的屏幕大小之内,偶尔也会在媒体查询代码中包含 max-width。如:

@media (max-width: @screen-xs-max) { ... }

@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { ... }

@media (min-width: @screen-md-min) and (max-width: @screen-md-max) { ... }

@media (min-width: @screen-lg-min) { ... }

以上媒体查询是按照视口的大小,从小到大的顺序来定义栅格系统的样式,从媒体查询的定义一眼就能看出Bootstrap3移动优先的设计理念。

根据CSS后来居上的规则(即后定义的样式会覆盖先定义的相同样式),大屏幕的样式会覆盖比它小的屏幕的相同样式。但是,如果大屏幕下没有定义相同的样式,则小屏幕的样式就不会被覆盖,大屏幕就自然而然地应用小屏幕的样式,也就实现了移动优先。

关于作者

歪脖先生,十五年以上软件开发经验,酷爱Web开发,精通 HTML、CSS、JavaScript、jQuery、JSON、Python、Less、Bootstrap等,著有《HTML宝典》、《揭秘CSS》、《Less简明教程》、《JSON教程》、《Bootstrap2用户指南》、《Bootstrap3实用教程》,并全部在 GitHub 上开源。

Bootstrap3 栅格系统相关推荐

  1. Bootstrap3栅格系统布局实例

    布局实例 Bootstrap3栅格系统的核心理念是移动设备优先,其实也就是小设备优先.使用这些栅格类,再结合栅格系统的规则,就可以构建出千变万化的页面布局. 先看一个简单实例,来加深对移动设备优先的理 ...

  2. Bootstrap3 栅格系统之列排序

    列排序 Bootstrap 栅格系统中一个非常人性化的特性,就是使用 .col-md-push-* 和 .col-md-pull-* 类来改变列的顺序.push 将元素向右推动 * 指定的列数,pul ...

  3. Bootstrap3 栅格系统之列嵌套

    列嵌套 Bootstrap栅格系统也支持列嵌套,即在一个列中嵌套一个或多个行.被嵌套的行依然遵守最大 12 列的规则,即一行中所包含的总列数不能大于12(当然,也没有要求你必须占满12列),如果大于 ...

  4. Bootstrap3 栅格系统-媒体查询

    在栅格系统中,我们在 Less 文件中使用以下媒体查询(media query)来创建关键的分界点阈值. /* 超小屏幕(手机,小于 768px) */ /* 没有任何媒体查询相关的代码,因为这在 B ...

  5. Bootstrap3 栅格系统-简介

    Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列.它包含了易于使用的预定义类,还有强大的mixin 用于生成更具 ...

  6. Bootstrap3 栅格系统-栅格参数

    通过下表可以详细查看 Bootstrap 的栅格系统是如何在多种屏幕设备上工作的. -–下面有个"顶"字,你懂得O(∩_∩)O哈哈~ -–乐于分享,共同进步! -–更多文章请看:h ...

  7. Bootstrap3 栅格系统之自定义mixin和变量

    mixin和变量 除了用于快速布局的预定义栅格类,Bootstrap 还包含了一组 Less 变量和 mixin,通过自定义这些变量和 mixin,可以生成简单.语义化的布局. 1.变量 通过变量来定 ...

  8. Bootstrap3 栅格系统之列平移

    列平移 使用 .col-md-offset-* 类,可以将列向右侧平移,* 指定要平移的列数.平移的本质,是为元素增加 * 列的左外边距(margin-left).如,.col-md-offset-4 ...

  9. Bootstrap3.0 栅格系统背后的精妙魔法(Bootstrap3.0的栅格布局系统实现原理) - willian12345...

    Bootstrap3.0 栅格系统背后的精妙魔法(Bootstrap3.0的栅格布局系统实现原理) - willian12345 时间 2014-02-20 17:58:00  博客园-原创精华区 原 ...

最新文章

  1. 深度学习综述:Hinton、Yann LeCun和Bengio经典重读
  2. 什么是信息服务外包?
  3. solidworks操作记录
  4. Latex注释快捷键
  5. [USACO06DEC]牛的野餐Cow Picnic DFS
  6. java启动scrapy爬虫,爬虫入门之Scrapy 框架基础功能(九)详解
  7. LeetCode 454. 四数相加 II 思考分析
  8. c# html转为图片,C# 使用 WebBrowser 实现 HTML 转图片功能的示例代码
  9. 电脑重启bootmgr_电脑系统启动:显示0xc0000428怎么办
  10. flash 上传文件 java_Flash 二进制传图片到后台Java服务器接收
  11. w3cschool菜鸟教程php,JS实例学习笔记——w3cschool+菜鸟教程
  12. esp32在ubuntu搭建环境,clone esp-idf部分库clone失败
  13. 清明上河图对计算机技术的启发,风俗画的定义与《清明上河图》的启示
  14. 计算机总是莫名其妙重启,电脑老是自动重启怎么办,电脑为什么经常自动重启_系统圣地...
  15. 防红域名生成的3种方法介绍
  16. DDOS防御抗D平台方案
  17. Eclipse 创建JavaWeb工程
  18. Linux中FTP设置登录欢迎词,怎么为FTP登陆用户设置欢迎语(servu)
  19. python只读打开文件,python如何使用只读、不显示窗口的方式打开ppt文件
  20. 前端编程中,如何消除浏览器缓存

热门文章

  1. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实现字典的打印...
  2. 收购Nervana,英特尔缘何看中AI市场
  3. python学习笔记4(对象/引用;多范式; 上下文管理器)
  4. (数学)最小二乘的几何意义及投影矩阵
  5. eclipse package explorer视图中怎么让default package不显示?
  6. android设置图片自适应控件大小
  7. asp.net中实现群发邮件功能
  8. linux磁盘满了怎么处理
  9. yum 安装boost
  10. BZOJ 4155 Humble Captains