栅格系统是Bootstrap响应式布局的框架,栅格系统通过一系列的行(row)与列(column)的组合来创建页面布局:
(.row)
必须包含在容器container或container-fluid
里;(.col)
;.col-sm-4
的类来控制每一列占位多少格(这里是4格);col-xs-*,col-sm-*,col-md-*,col-lg-*
分别代表手机、平板、显示器、大显示器。*
则代表所需要设置的格子数,范围1,12.col-md-offset-*
:使用.col-md-4
元素向右侧偏移了4个列的宽度;并影响后续所有的列..col-lg/md/sm/xs-pull-* 拉
.col-lg/md/sm/xs-push-* 推
<div class="container bg">
<div class="row">
<div class="col-md-3 bgMD3">MD-3div>
<div class="col-md-9 bgMD9">MD-9div>
div>
<div class="row">
<div class="col-md-3 bgMD3 col-md-push-9">MD-3div>
<div class="col-md-9 bgMD9 col-md-pull-3">MD-9div>
div>
div>
一个简单的布局
我们希望创建一个行,分为两列,它们大小关系是2:1。因为Boostrap栅格一共12格,所以左边8格,右边4格。使用Bootstrap布局时,多数情况都需要先创建一个.container,然后在里面添加一行(.row)。.row下有两个div.user,它们分别占8格和4格;需注意 Bootstrap页面多数情况下都会有一个或多个.container
来包含整个页面,但千万不要嵌套.container! 即一个.container
下不要再有.container
了。但 .row是可以嵌套的
<div class="container">
<div class="row user-list">
<div class="col-sm-8 user">
<img class="img-circle" src="img/img3.jpg" width="140" height="140">
<h2>purus molestieh2>
<p>Turpis inceptos, neque vel dolor.Turpis inceptos, neque vel dolor.p>
<p><a class="btn btn-default" href="#">访问 »a>p>
div>
<div class="col-sm-4 user">
<img class="img-circle" src="img/img2.jpg" width="140" height="140">
<h2>nullam molestieh2>
<p>Turpis inceptos, neque vel dolor.p>
<p><a class="btn btn-default" href="#">访问 »a>p>
div>
div>
div>
上面col-sm-8
中的sm是指:该布局在当前屏幕尺寸 ≥ 小屏幕(768px)
时才生效。如果屏幕太小,该布局失效用户列表将会回到默认的堆叠状态:
响应式布局
屏幕适配: 列根据不同的屏幕尺寸分为四组:
lg用来匹配大屏幕(大桌面显示器):≥ 1200px 的屏幕;
md用来匹配中等屏幕(桌面显示器):≥ 992px 的屏幕;
sm用来匹配小屏幕(平板):≥ 768px 的屏幕;
xs用来匹配超小屏幕(手机):< 768px 的屏幕;
可以同时存在,重新组织.user-list:
<div class="row user-list">
<div class="col-sm-6 col-md-3 user">...div>
<div class="col-sm-6 col-md-3 user">...div>
<div class="col-sm-6 col-md-3 user">...div>
<div class="col-sm-6 col-md-3 user">...div>
div>
拖动浏览器窗口,使其宽度小于sm(768px),此时上述所有col-xx-x布局都失效,.user回到堆叠状态:
当宽度刚刚大于 768px 时,.col-sm-6
生效,每行显示两个.user:
当宽度刚刚大于 992px 时,.col-md-3
生效,每行显示4个.user:
屏幕适配: 显示与隐藏
.hidden-xx-*
在屏幕大小匹配时隐藏某个元素
.visible-xx-*
在屏幕大小匹配时显示某个元素
<div class="container bg">
<div class="row">
<div class="col-md-3 bgMD3 hidden-md">MD-3div>
<div class="col-md-9 bgMD9">MD-9div>
div>
div>
<div class="row user-list">
<div class="col-md-8 user">...div>
<div class="col-md-4">
<div class="row">
<div class="col-md-6 user">...div>
<div class="col-md-6 user">...div>
div>
div>
div>
table布局 淘汰
虽然容易控制,但是语义 渲染效率低
DIV + CSS布局
语义正确的,渲染效率高 不容易控制
弹性盒子布局
语义正确,渲染效率高,控制容易 响应式内容布局上有些吃力
bootstrap栅格系统布局
语义正确,渲染效果高,简单容易控制 实现了响应式
参考:https://zhuanlan.zhihu.com/p/21408006