bootstrap栅格化的工作原理

简介

Bootstrap是一组用于网站和网络应用程序开发的开源前端(所谓“前端”,指的是展现给最终用户的界面。与之对应的“后端”是在服务器上面运行的代码)框架,包括HTML、CSS及JavaScript的框架,提供字体排印、窗体、按钮、导航及其他各种组件及Javascript扩展,旨在使动态网页和Web应用的开发更加容易。

兼容性以及版本

Bootstrap与最新版的Google Chrome、Firefox、Internet Explorer、Opera和Safari浏览器兼容,尽管有些浏览器并不是支持所有操作系统。

从2.0版本开始,Bootstrap支持响应式网页设计(RWD)。页面布局可以根据显示网页的设备(桌面、平板电脑、手机)来进行动态调整。

从3.0版本开始,Bootstrap将移动设备优先作为设计方针,更加强调了响应式设计。

4.0 alpha版本添加Sass和Flexbox的支持。

Bootstrap是开源软件,可以从GitHub上面找到。开发者被鼓励参与项目,并且对项目做出自己的贡献。

Bootstrap是GitHub上面被标记为“Starred”次数排名第二最多的项目。Starred次数超过105,000,而分支次数超过了47,000次。 - 来自维基百科

栅格化布局

栅格系统中,浏览器会随着屏幕的大小的增减自动分配最多 12 列。通过一系列的行(row) 与列(column)的组合来创建页面布局。

工作原理如下:
  1. “行(row)”必须包含在 .container (固定宽度)或 .container-fluid (100% 宽度)中,以便为其赋予合适的排列(aligment)和内补(padding)。
  2. 通过“行(row)”在水平方向创建一组“列(column)”。
  3. 你的内容应当放置于“列(column)”内,并且,只有“列(column)”可以作为 行(row)”的直接子元素。
  4. 类似 .row 和 .col-xs-4 这种预定义的类,可以用来快速创建栅格布局。 Bootstrap 源码中定义的 mixin 也可以用来创建语义化的布局。
  5. 通过为“列(column)”设置 padding 属性,从而创建列与列之间的间隔(gutter)。
    通过为 .row 元素设置负值 margin 从而抵消掉为 .container 元素设置的 padding, 也就间接为“行(row)”所包含的“列(column)”抵消掉了 padding。
  6. 负值的 margin 就是下面的示例为什么是向外突出的原因。在栅格列中的内容排成一行。
  7. 栅格系统中的列是通过指定 1 到 12 的值来表示其跨越的范围。例如,三个等宽的列 可以使用三个 .col-xs-4 来创建。
  8. 如果一“行(row)”中包含了的“列(column)”大于 12,多余的“列(column)” 所在的元素将被作为一个整体另起一行排列。
  9. 栅格类适用于与屏幕宽度大于或等于分界点大小的设备 , 并且针对小屏幕设备覆 盖栅格类。 因此,在元素上应用任何 .col-md- 栅格类适用于与屏幕宽度大于或等于分 界点大小的设备 ,并且针对小屏幕设备覆盖栅格类。因此,在元素上应用任何 .col-lg- 不存在, 也影响大屏幕设备。

啰嗦了这么多, 我们看看实际效果吧

demo显示效果以及示例代码如下

image

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>bootstrap栅格化布局详解</title>
<!--viewport 意思是网页的默认高度-->
<!--width=device-width 意思是网页宽度默认等于屏幕宽度-->
<!--initial-scale=1 意思是原始缩放比例为 1.0-->
<meta name="viewport" content="width=device-width , initial-scale=1"/>
<!--更好的让bootstrap兼容IE-->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--引入bootstrap库文件-->
<link rel="stylesheet" href="css/bootstrap.css">

<!--IE9以下不支持一些最新的CSS3属性, 如果需要使用的话 , 我们可以使用CSS3属性来做兼容性处理-->
<!-[if IE 9]>
<![endif]->
<style>
/*显示灰色方格*/
.a {
height: 100px;
background-color: #eee;
border:1px solid #ccc;
}
</style>
</head>
<body>
<div class="container">
<!--移动设备屏幕-->
<div class="row">
<div class="col-xs-3 a">1-5</div>
<div class="col-xs-9 a">6-12</div>
</div>

<!--大屏幕设备-->
<div class="row">
<div class="col-lg-3 a">1-3</div>
<div class="col-lg-5 a">4-9</div>
<div class="col-lg-4 a">10-12</div>
<!--不推荐这么写,当列数大于12时,在这行内继续定义的列会被挤下去-->
<div class="col-lg-2 a">XXX</div>
</div>

<!--中等屏幕设备-->
<div class="row">
<div class="col-md-2 a">1-2</div>
<div class="col-md-10 a">3-12</div>
</div>

<!--小屏幕设备-->
<div class="row">
<div class="col-sm-6 a">1-6</div>
<div class="col-sm-6 a">7-12</div>
</div>
</div>
</body>
</html>

看了demo , 是不是感觉很简单呢

(完)

分享到