前端页面开发,最低兼容IE 8的多设备跨平台问题解决!

项目要求

  网站能够使用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

便携设备,如手机、平板电脑

print

打印预览图等

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

 

原文地址:https://www.cnblogs.com/PCH1024/p/5317841.html