• 前端页面开发,最低兼容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

     

  • 相关阅读:
    体验cygwin纪实
    播布客视频PIT专用播放器MBOO2015
    rpm基本命令参考
    rhel7.x配置本地yum
    mtr网络连通性测试
    Oracle下载汇聚
    Spring Cloud心跳监测
    Hystrix的用法
    Redis系列十:缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
    dubbo异步调用三种方式
  • 原文地址:https://www.cnblogs.com/PCH1024/p/5317841.html
Copyright © 2020-2023  润新知