bootstrap3学习1:响应式布局layout
在去年的这个时候写过关于bootstrap的相关文章(见:bootstrap2学习1:基本CSS样式),然后就搁置了,原因是因为当时对bootstrap的了解不深,并且当时v2版本对响应式设计的不是非常好。如今,bootstrap的v3版本很早就出来了,现在又拿出来老调重弹一次。
这次学习bootstrap,希望是一次比较深入的了解bootstrap,但愿能够在实际开发中运用的得心应手。学习的步骤大致根据bootstrap的中文翻译文档(见参考资料)来,但也有部分地方会深入或者浅出。
1、像素宽度分类
在bootstrap的v3版本中,已经将各种媒介分为4种像素宽度类型:
- xs:extra small 特别窄屏幕,默认指浏览器像素宽度小于768px
- sm:small 窄屏幕,默认指浏览器像素宽度大于等于768px
- md:middle 中等宽度屏幕,默认值指浏览器像素宽度大于等于992px
- lg:large 大屏幕,默认值指浏览器像素宽度大于等于1200px
这四种屏幕宽度对应的尺寸缩写死记硬背记住,对布局来说非常的重要。
2、布局栅格化
和v2一样,bootstrap将内容区域分为了12等分,平均每一等分都有相等的间距,左右无外边距。一个栅格宽度为栅格单位宽度,一个栅格的外边距为栅格的单位外边距。栅格的宽度和边距都是百分比计算,使之能够自适应各种宽度。栅格的class为col-*
,栅格的外包class为row
。每一个行可以有多个列组成的多行栅格,每一个行在形象意义上称为版块(模块、区域),是一个相对独立的部分。但一行有且只能一个行出现,不能出现多个。
结合屏幕宽度分别有:
- xs:col-xs-1 ~ col-xs-12,多列始终在一行内。
- sm:col-sm-1 ~ col-sm-12,多列在浏览器像素宽度大于等于768px时才在一行内。
- md:col-md-1 ~ col-md-12,多列在浏览器像素宽度大于等于992px时才在一行内。
- lg:col-lg-1 ~ col-lg-12,多列在浏览器像素宽度大于等于1200px时才在一行内。
例1:http://demo.qianduanblog.com/3150/1.html
- <div class="row">
- <div class="col-xs-4"></div>
- <div class="col-xs-4"></div>
- <div class="col-xs-4"></div>
- </div>
如上,xs宽度下,同行多列始终在一行内:
例2:http://demo.qianduanblog.com/3150/2.html
- <div class="row">
- <div class="col-sm-4"></div>
- <div class="col-sm-4"></div>
- <div class="col-sm-4"></div>
- </div>
如预期的一样,在大于等于768px的时候,多列是水平排列的,否则是垂直排列的:
对于md、lg和sm是同理的,惟独xs特殊。
在处理不同像素宽度的时候,大宽度的适配优先于窄宽度(即ls>md>sm>xs)。
例3:http://demo.qianduanblog.com/3150/3.html
- <div class="row">
- <div class="col-sm-4 col-md-1"></div>
- <div class="col-sm-4 col-md-10"></div>
- <div class="col-sm-4 col-md-1"></div>
- </div>
如上,md的优先级就高于sm,即:
- 在大于等于992px(md)的时候(即使此时也是大于等于768px(sm)的),该行多列是水平方向
1:10:1
栅格宽度排列的; - 在小于992px并且大于等于768px的时候,该行多列遵循sm规则,在水平方向
4:4:4
栅格宽度排列; - 在小于768px的时候,该行多列呈垂直方向排列(即水平方向
12:12:12
)。
如下图:
简要说明:
- // 遵循md规则
- if( width >= 992 ) 1:10:1
- // 遵循sm规则
- else if( width < 992 && width >= 768 ) 4:4:4
- // 普通规则
- else 12:12:12
例4:http://demo.qianduanblog.com/3150/4.html
- <div class="row">
- <div class="col-xs-4 col-sm-1 col-md-1 col-lg-5"></div>
- <div class="col-xs-4 col-sm-3 col-md-10 col-lg-2"></div>
- <div class="col-xs-4 col-sm-8 col-md-1 col-lg-5"></div>
- </div>
如上,sm的优先级大于xs,md的优先级就高于xs,而lg的优先级又高于md,即:
- 在大于等于1200px的时候,呈水平5:2:2单位栅格宽度排列;
- 在大于等于992px并且小于1200px的时候,呈水平1:10:1单位栅格宽度排列;
- 在大于等于768px并且小于992px的时候,呈水平1:3:8单位栅格宽度排列;
- 其余遵守xs规则,呈水平4:4:4单位栅格宽度排列。
如下图:
简要说明:
// 遵循lg规则
if( width >= 1200 ) 5:2:2
// 遵循md规则
else if( width < 1200 && width >= 992 ) 1:10:1
// 遵循sm规则
else if( width < 992 && width >= 768 ) 1:3:8
// 遵循xs规则
else 4:4:4
3、栅格偏移
理解了栅格化,那么栅格偏移也相对容易理解了。v3的偏移分别有以下几种:
- offset:左外边距(margin-left);
- pull:右位移(right);
- push:左位移(left)。
其中offset使用的频率最高。不同的列宽度对应的外边距是不同的,所以每一种类型偏移都有四种,以offset为例(以下皆以offset为例):
- xs:col-xs-offset-0 ~ col-xs-offset-12
- sm:col-sm-offset-0 ~ col-sm-offset-12
- md:col-md-offset-0 ~ col-md-offset-12
- lg:col-lg-offset-0 ~ col-lg-offset-12
例5:http://demo.qianduanblog.com/3150/5.html
- <div class="row">
- <div class="col-xs-4"></div>
- <div class="col-xs-4 col-xs-offset-4"></div>
- </div>
结果如图:
例6:http://demo.qianduanblog.com/3150/6.html
- <div class="row">
- <div class="
- col-xs-4
- col-sm-1
- col-md-10
- col-lg-6
- "></div>
- <div class="
- col-xs-4 col-xs-offset-4
- col-sm-1 col-sm-offset-10
- col-md-1 col-md-offset-1
- col-lg-1 col-lg-offset-5
- "></div>
- </div>
结果如图:
另外push和pull主要用来调整列顺序的,比如视图情况需要内容区域在右边,侧边栏在左边,但源代码则必须内容在左边,侧边栏在右边,内容的代码在前面,对SEO据说有一点的好处。
例7:http://demo.qianduanblog.com/3150/7.html
- <div class="row">
- <div class="col-md-9 col-md-push-3">
- 源代码左边,但视图在右边
- </div>
- <div class="col-md-3 col-md-pull-9">
- 源代码右边,但视图在右边
- </div>
- </div>
4、布局实例
例8,经典的左侧边栏+右内容栏:http://demo.qianduanblog.com/3150/8.html
例9,经典的单内容栏:http://demo.qianduanblog.com/3150/9.html
5、参考资料
bootstrap栅格系统:http://getbootstrap.com/css/#grid
bootstrap3学习1:响应式布局layout的更多相关文章
- CSS学习笔记——响应式布局
响应式布局 响应式布局是现在很流行的一个设计理念,随着移动互联网的盛行,为解决如今各式各样的浏览器分辨率以及不同移动设备的显示效果,设计师提出了响应式布局的设计方案.所谓的响应式布局,就是一个网站能够 ...
- [html5] 学习笔记-响应式布局
1.响应式布局介绍 响应式布局是2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端——而不是每一个终端做一个特定的版本.这个概念是为了兼容移动互联网浏览而诞生的,其目的是为用户提供 ...
- Bootstrap学习笔记-响应式布局原理
响应式布局的原理就是利用css3中@media媒体来实现的 <html> <head> <meta charset="utf-8"> <t ...
- CSS3与页面布局学习笔记(四)——页面布局大全(负边距、双飞翼、多栏、弹性、流式、瀑布流、响应式布局)
一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能 ...
- HTML5学习总结-番外05 响应式布局
1. 响应式布局 响应式布局是2015年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端,而不是为每个终端做一个特定的版本.这个概念是为解决移动互联网浏览而诞生的.其目的是为用户提欧共更加 ...
- 【学习笔记】响应式布局的常用解决方案(媒体查询、百分比、rem、和vw/vh)
原文转载:https://blog.csdn.net/sinat_17775997/article/details/81020417 一.媒体查询 不同物理分辨率的设备,在还原设计稿时,css中设置的 ...
- 响应式布局(Responsive layout,RL)的简单Demo
★背景: 响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端--而不是为每个终端做一个特定的版本.这个概念是为解决 ...
- BootStrap2学习日记2--将固定布局换成响应式布局
概要:响应式页面是指页面根据浏览平台(尺寸)的不同显示不同的CSS. 原理:在Html的的头加入代码 <style> /*当浏览器宽度大于767是 采用括号里面的CSS样式*/ @medi ...
- [学习笔记]viewport定义,弹性布局,响应式布局
一,移动端宽度设置viewport视图窗口,<meta name="viewport" content="width=device-width,initial-sc ...
随机推荐
- jQuery的preventDefault()
1. 含义: preventDefault() 方法阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交). 2. 语法: event.preventDefault() 3. 例子: 防止链 ...
- NWERC 2012 Problem I Idol
又是个2-sat的模板题: 反正评委的选择必须有一个是正确的,1错误,那么2就必须正确: 这就是一个2-sat问题. 直接上白书的模板啊,不过稍微要注意的一点是对于第一个点必须要选择,不然就违反了题意 ...
- Optimal Milking
poj2112:http://poj.org/problem?id=2112 题意:K台挤奶机器,C头牛,K不超过30,C不超过200,每台挤奶机器最多可以为M台牛工作,给出这些牛和机器之间,牛和牛之 ...
- 用POLL的方式,没有跑出结果来,立此存照
咦,这些内容,和我以前看内核时的东东,对应起来了.. SELECT,POLL,EPOLL,非阻塞,异步之类的... 但我没有调出来.回家有空了可以看看,不用再敲打代码啦... #!/usr/bin/e ...
- LINUX TOP,不是这样玩地!!!
老同志遇到新问题了. TOP显示完全不是我要的,CPU,内存都是0.每个CPU还分别显示. 网上搜下,原来是A(显示风格)R(反向排序)P,M(CPU,内存排序)之类引起的. 记下了.
- 用SharedPreferences保存List(Map(String, String))数据
原因: SharedPreferences没有保存数组的方法,但是有时候为了保存一个数组而进行序列化,或者动用sqlite都是有点杀猪焉用牛刀的感觉,所以就自己动手改进一下吧. 解决方案: 采用的方式 ...
- 5.JSON
AJAX传递复杂数据如果自己进行格式定义的话会经历组装.解析的过程,因此AJAX中有一个事实上的数据传输标准JSON. JSON将复杂对象序列化为一个字符串,在浏览器端再将字符串反序列化为JavaSc ...
- NOT EXISTS优化
INSERT INTO F_PTY_INDIV (PTY_ID, PTY_NAME, GENDER_CD, BIRTHDAY, CERT_TYPE, CERT_NO, SOCINSUR_NO, COU ...
- C++ Prime:指针
指针与引用的区别:1.指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以先后指向几个不同的对象:其二:指针无需在定义时赋值.指针在块作用域内定义如果没有被初始化,也将拥有一个不确 ...
- 短信验证码js实现
短信验证码实现 我们在使用移动.电信等运营商网上营业厅的时候,为确保业务的完整和正确性,经常会需要用到短信的验证码.最近因为某省业务需要,也做了个类似的功能. 原理很简单,就是在用户点击"获 ...