bootstrap之旅 - 响应式布局
bootstap是一个能够兼容多屏,移动优先的UI框架。
支持的布局和插件:
HTML&CSS:网格、布局、排版、编码、表格、表单、按键、图片、图标、按钮组、导航、面包屑导航、页码、标签、徽章、缩略图、提示框、进度栏
JS:模态窗口(Modals)、提示效果(Tool Tips)、“泡芙”效果(Popovers)、滚动监控(Scrollspy)、旋转木马(Carousel)、输入提示(Typeahead)等等。
其他:定制器(Customizer)、 LESS CSS
这种框架我们一般称之为响应式前端开发框架,今天我们就来了解一下什么叫“响应式布局”,这有利于我们深层次的学习Bootstrap
背景:
响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。这个概念是为解决移动互联网浏览而诞生的。
能够快捷解决多设备显示适应问题
一定程度上改变了网站原有的布局结构,会出现用户混淆的情况
设计思路:
通过不同的媒介类型和条件定义样式表规则。媒介查询让CSS可以更精确作用于不同的媒介类型和同一媒介的不同条件。媒介查询的大部分媒介特性都接受min和max用于表达”大于或等于”和”小于或等于”。如:width会有min-width和max-width媒介查询可以被用在CSS中的@media和@import规则上,也可以被用在HTML和XML中。通过这个标签属性,我们可以很方便的在不同的设备下实现丰富的界面,特别是移动设备,将会运用更加的广泛。
设备的分辨率resolution。
<link rel=“stylesheet” type=“text/css” media=“only screen and (max-width: 480px),only screen and (max-device-width: 480px)” href=“link.css”/>
@media (min-device-width:1024px) and (max-width:989px),screen and (max-device-width:480px),(max-device-width:480px) and (orientation:landscape),(min-device-width:480px) and (max-device-width:1024px) and (orientation:portrait) {srules}
从上面的例子可以看出,字符间以空格相连,选取条件包含在小括号内,srules为兼容设置的样式表,包含在中括号里面。only(限定某种设备,可省略),and(逻辑与),not(排除某种设备)为逻辑关键字,多种设备用逗号分隔,这一点继承了css基本语法。
类型 | 解释 |
---|---|
all | 所有设备 |
braille | 盲文 |
embossed | 盲文打印 |
handheld | 手持设备 |
文档打印或打印预览模式 | |
projection | 项目演示,比如幻灯 |
screen | 彩色电脑屏幕 |
speech | 演讲 |
tty | 固定字母间距的网格的媒体,比如电传打字机 |
tv | 电视 |
关键字 | 说明 |
---|---|
only | 限定某种设备类型 |
and | 逻辑与,连接设备名与选择条件、选择条件1与选择条件2 |
not | 排除某种设备 |
, | 设备列表 |
媒体特性
值
可用媒体类型
接受min/max
简介
width
<length>
视觉屏幕/触摸设备
yes
定义输出设备中的页面可见区域宽度(单位一般为px)
heigth
<length>
视觉屏幕/触摸设备
yes
定义输出设备中的页面可见区域高度(单位一般为px)
device-width
<length>
视觉屏幕/触摸设备
yes
定义输出设备的屏幕可见宽度(单位一般为px)
device-heigth
<length>
视觉屏幕/触摸设备
yes
定义输出设备的屏幕可见高度(单位一般为px)
orientation
portrait | landscape
位图介质类型
no
定义’height’是否大于或等于’width’。值portrait代表是,landscape代表否即设,备手持方向:portait为横向,landscape为竖向
aspect-ratio
<ratio>
位图介质类型
yes
定义’width’与’height’的比率,即浏览器的长宽比
device-aspect-ratio
<ratio>
位图介质类型
yes
定义’device-width’与’device-height’的比率,即设备屏幕长宽比。如常见的显示器比率:4/3, 16/9,16/10
color
<integer>
视觉媒体
yes
定义每一组输出设备的彩色原件个数。如果不是彩色设备,则值等于0
color-index
<integer>
视觉媒体
yes
定义在输出设备的彩色查询表中的条目数。如果没有使用彩色查询表,则值等于0
monochrome
<integer>
视觉媒体
yes
定义在一个单色框架缓冲区中每像素包含的单色原件个数。如果不是单色设备,则值等于0
resolution
<resolution>
位图介质类型
yes
定义设备的分辨率。如:96dpi,300dpi,118dpcm
scan
progressive | interlace
电视类
no
定义电视类设备的扫描工序, progressive逐行扫描,interlace隔行扫描
grid
<integer>
栅格设备
no
用来查询输出设备是否使用栅格或点阵。只有1和0才是有效值,1代表是,0代表否
最后,我们需要对我们刚刚设计的Media Queries进行测试,想要在不同设备上测试Media Queries的效果,可以使用一个浏览工具来检验不同尺寸屏幕下的显示效果,在这里为大家介绍一个不错的在线工具 – Responsivator,它可以模拟iPhone等各种不同设备,并且还可以自定义不同尺寸屏幕的显示效果,只需要输入一个url甚至是本地的一个url(如:http://127.0.0.1/),就可以看到网站在不同尺寸屏幕下的显示效果。
/* 当浏览器的可视区域小于980px */
@media screen and (max-width: 980px) {
#wrap {width: 90%; margin:0 auto;}
#content {width: 60%;padding: 5%;}
#sidebar {width: 30%;}
#footer {padding: 8% 5%;margin-bottom: 10px;}
}
/* 当浏览器的可视区域小于650px */
@media screen and (max-width: 650px) {
#header {height: auto;}
#searchform {position: absolute;top: 5px;right: 0;}
#content {width: auto; float: none; margin: 20px 0;}
#sidebar {width: 100%; float: none; margin: 0;}
}
通过上面我们就可以监测浏览器的可视区域变化的时候我们的页面结构元素也会相对应的变化,当然你可以再多设置几个尺寸的监测层叠样式表,这样子就可以根据不同尺寸设备来进行响应式的布局。为了更好的显示效果,我们往往还要格式化一些CSS属性的初始值:
/* 禁用iPhone中Safari的字号自动调整 */
html {
-webkit-text-size-adjust: none;
}
/* 设置HTML5元素为块 */
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
display: block;
}
/* 设置图片视频等自适应调整 */
img {
max-width: 100%;
height: auto;
width: auto\9; /* ie8 */
}
.video embed, .video object, .video iframe {
width: 100%;
height: auto;
}
<meta name=“viewport” content=“width=device-width; initial-scale=1.0”>
<meta name=”viewport” content=”width=device-width; initial-scale=1.0″>
最后说下IE浏览器(ie9以下是不支持的CSS3的),因为他不支持media Queries的,使用时需要引用一个Media Query Javascript解决,如下:
<!--[if lt IE 9]>
<script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js">
</script> <![endif]-->
- 扫码关注“火龙果编程”公众号,早日成为编程大神
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。