项目要求:
网站能够使用PC、ipad、mobile phone正常访问
页面PSD版式宽度分别为1024px和750px
参考资料
使用CSS3 Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表。换句话说,其允许我们在不改变内容的情况下,改变页面的布局以精确适应不同的设备。
Media Queries的语法如下所示:
@media [media_query] media_type and media_feature
使用Media Queries样式模块时都必须以"@media"方式开头。
[media_query]表示查询关键字包括all/not/only
not关键字是用来排除某种制定的媒体类型,换句话来说就是用于排除符合表达式的设备。
only用来定某种特定的媒体类型,可以用来排除不支持媒体查询的浏览器。其实only很多时候是用来对那些不支持Media Query但却支持Media Type的设备隐藏样式表的。其主要有:支持媒体特性(Media Queries)的设备,正常调用样式,此时就当only不存在;对于不支持媒体特性(Media Queries)但又支持媒体类型(Media Type)的设备,这样就会不读了样式,因为其先读only而不是screen;另外不支持Media Qqueries的浏览器,不论是否支持only,样式都不会被采用。
在Media Query中如果没有明确指定Media Type,那么其默认为all.
media_type参数的作用是指定设备类型,通常称为媒体类型。实际上在CSS2.1版本时已经定义了该媒体类型。
media_type |
设备类型说明 |
all |
所有设备 |
aural |
听觉设备 |
braille |
点字触觉设备 |
handled |
便携设备,如手机、平板电脑 |
|
打印预览图等 |
projection |
投影设备 |
screen |
显示器、笔记本、移动端等设备 |
tty |
如打字机或终端等设备 |
tv |
电视机等设备类型 |
embossed |
盲文打印机 |
media_feature的主要作用是定义CSS中的设备特性,大部分移动设备特性都允许接受min/ max的前缀。例如,min-width表示指定大于等于该值;max-width表示指定小于等于该值。
设 备 特 性 |
是否允许 min/max 前缀 |
特 性 的 值 |
说 明 |
width |
允许 |
含单位的数值 |
指定浏览器窗口的宽度大小, 如480像素 |
height |
允许 |
含单位的数值 |
指定浏览器窗口的高度大小, 如320像素 |
device-width |
允许 |
含单位的数值 |
指定移动设备的屏幕分 辨率宽度大小,如480像素 |
device-height |
允许 |
含单位的数值 |
指定移动设备的屏幕分 辨率高度大小,如320像素 |
orientation |
不允许 |
字符串值 |
指定移动设备浏览器的窗口方向。 只能指定portrait(纵向)和landscape (横向)两个值 |
aspect-radio |
允许 |
比例值 |
指定移动设备浏览器窗口的 纵横比例,如16:9 |
device-aspect-radio |
允许 |
比例值 |
指定移动设备屏幕分辨率的 纵横比例,如16:9 |
color |
允许 |
整数值 |
指定移动设备使用多少位的颜色值 |
color-index |
允许 |
整数值 |
指定色彩表的色彩数 |
monochrome |
允许 |
整数值 |
指定单色帧缓冲器中每像素的字节数 |
resolution |
允许 |
分辨率值 |
指定移动设备屏幕的分辨率 |
scan |
不允许 |
字符串值 |
指定电视机类型设备的扫描方式。 只能指定两种值:progressive表 示逐行扫描和interlace表示隔行扫描 |
grid |
不允许 |
整数值 |
指定设备是基于栅格还是基于位图。 基于栅格时该值为1,否则为0 |
兼容的浏览器:
HTML中引用方式如下:
一、最大宽度Max Width
<link rel="stylesheet" media="screen and (max-600px)" href="small.css" type="text/css" />
上面表示的是:当屏幕小于或等于600px时,将采用small.css样式来渲染Web页面。
二、最小宽度Min Width
<link rel="stylesheet" media="screen and (min-900px)" href="big.css" type="text/css" />
上面表示的是:当屏幕大于或等于900px时,将采用big.css样式来渲染Web页面。
三、多个Media Queries使用
<link rel="stylesheet" media="screen and (min-600px) and (max-900px)" href="style.css" type="text/css" />
Media Query可以结合多个媒体查询,换句话说,一个Media Query可以包含0到多个表达式,表达式又可以包含0到多个关键字,以及一种Media Type。正如上面的其表示的是当屏幕在600px-900px之间时采用style.css样式来渲染web页面。
四、设备屏幕的输出宽度Device Width
<link rel="stylesheet" media="screen and (max-device- 480px)" href="iphone.css" type="text/css" />
上面的代码指的是iphone.css样式适用于最大设备宽度为480px,比如说iPhone上的显示,这里的max-device-width所指的是设备的实际分辨率,也就是指可视面积分辨率
CSS中引用方式如下:
@media screen and (max- 600px) {
选择器 {
属性:属性值;
}
}
最后不要忘记:
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用css3-mediaqueries.js或者Respond.js (推荐)
Respond.js 是一个快速、轻量的 polyfill,用于为 IE6-8 以及其它不支持 CSS3 Media Queries 的浏览器提供媒体查询的 min-width 和 max-width 特性,实现响应式网页设计(Responsive Web Design)。
参考:
一些关于Viewport与device-width的东西~:http://www.cnblogs.com/koukouyifan/p/4066567.html
自适应网页设计参考: http://www.ruanyifeng.com/blog/2012/05/responsive_web_design.html
两个viewport的故事:http://weizhifeng.net/viewports.html
CSS3 Media Queries: http://www.w3cplus.com/content/css3-media-queries
Media Queries语法总 :http://book.51cto.com/art/201204/328362.htm