zoukankan      html  css  js  c++  java
  • 浏览器兼容与响应式布局

    主流浏览器有5种:IEchromefirefoxsafariopera.

     

    浏览器兼容

    „  浏览器私有前缀

    1. -moz-            火狐浏览器
    2. -webkit-          360、苹果、猎豹、搜狗、QQ、 Chrome等浏览器
    3. -o-               Opera/欧朋浏览器
    4. -ms-              IE、百度等浏览器

    „  跨浏览器的默认样式

    1. Normalize.css  是替代 Reset.css,保护有用的浏览器默认样式,修改浏览器自身BUG,优化CSS的可用性,它是模块化的,拥有详细的文档。它从IE8开始支持。
    <link rel="stylesheet" href="http://cdn.staticfile.org/normalize/3.0.1/normalize.min.css" type="text/css" />
    1. Reset.css   移除浏览器的默认样式,然后再根据需要把样式再加回来。

    „  React.js 在浏览器中的兼容情况

    1. 从 React v15 开始,React DOM 将不会再支持 IE8 了。而中国还有超过 18% 的人在使用 IE8。使用仍然支持 IE8 的 React v0.14 。
    2. 我们现在使用的版本是 v0.14.6,不支持IE8,支持IE10/11、Egde。火狐、搜狗、360、IE11都有不同程度的兼容问题。

    „  Css3 在浏览器中的兼容问题

    1. Caniuse.com/#home   查询css3样式在浏览器中的兼容情况
    2. Css3在Ie中支持不友好,需要在html中加载  ie-css3.htc

    „  常用css内 hack 浏览器兼容写法,这次portal的兼容我使用的是选择器的前缀法,条件注释IE10不支持了且条件注释里的代码是不仅仅对css有效,其它兼容问题也可以使用条件注释方法,portal的兼容只有css的样式有问题

    1. -ms- : @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none){ … }
    2. -webkit-: @media screen and (-webkit-min-device-pixel-ratio:0){ … }
    3. -moz-:@-moz-document url-prefix() { … }

    „  使用虚拟机 VM VirtualBox

    1. 下载地址:http://soft.huweishen.com/soft/238.html
    2. 安装教程:http://tech.huweishen.com/gongju/1544.html

    响应式布局

    „  响应式布局方法

    1. 百分比布局
    2. bootstrap栅格系统
    3. Flex 伸缩盒布局
    4. 媒体查询

     

    Porttal里面用了媒体查询,效果不好,因为侧边栏定宽,导致两栏有交叉,还要再研究。

    综合流式布局和弹性布局及配合媒体查询 是 响应性布局的最好方式。

    „  媒体查询方法:

    1. 屏幕使用screen;设备使用print;手机设备使用device-width
    2. Window.screen  命令包含显示设备的信息
    3. Screen.height / screen.width 两个命令,用来了解设备的分辨率

    „  Head标签中需要引入:

    1. <meta name=”viewport” content=”width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no” />

    具体含义如下:

    1. Width: 控制viewport的大小。如device-width为设备的宽度。
    2. Height: 和width相对应,指定高度。
    3. initial-scale: 初始缩放比例,页面第一次加载时的缩放比例。
    4. maximum-scale 允许用户缩放到的最大比例,范围从0到10.0
    5. minimum-scale: 允许用户缩放到的最小比例,范围从0到10.0
    6. user-scalable: 用户是否可以手动缩放,值可以是: yes,ture  可以缩放;no,false 不可以缩放;

    „  字体自适应:

    1. 给根元素html,body设置基本字体,单位vw:

    html { font-size: calc(112.5% + 4 * (100vw - 600px) / 400); }

    1. 或用JS根据屏幕宽度计算字体大小:

    (function (doc, win) { 

         vardocEl=doc.documentElement, 

         resizeEvt='orientationchange'inwindow?'orientationchange':'resize', 

         recalc=function(){  

         varclientWidth=docEl.clientWidth;  

         if(!clientWidth)return;   

         docEl.style.fontSize=20*(clientWidth/320)+'px'; };  

         if(!doc.addEventListener)return

         win.addEventListener(resizeEvt,recalc,false); 

    doc.addEventListener('DOMContentLoaded',recalc,false);})(document,window); 

    在以前,如果我们想同一个网站对不同设备(比如PC端,手机端,平板端等等)提供支持,一般性的做法是针对不同的设备额外实现一套页面,在web端判断出访问设备类型时再路由到不同的实现。

    这种做法的弊端很明显,因为额外的实现,所以后续的更新及维护都比较繁琐且成本越来越高。那么我们有没有一种方法,就是只有一份实现但是可以根据不同的设备自动做展现上的调整。Media Query为这种思路的实现提供了支持。

    @media screen and (min- 961px) and (max- 1200px) {
        p {
            color: pink;
        }
    }

    上面代码的含义是指,当展现页面的宽度大于960px且小于1200px时,将p标签的字体颜色设置为粉色。

    自适应(响应式)网页设计

    我们可以使用CSS3的Media Query做一些自适应的网页设计。比如,

    <head>
        <link rel="stylesheet" media="screen and (max- 480px)" href="tiny.css" />
        <link rel="stylesheet" media="screen and (min- 481px) and (max- 600px)" href="small.css" />
        <link rel="stylesheet" media="screen and (min- 601px) and (max- 960px)" href="middle.css" />
        <link rel="stylesheet" media="screen and (min- 961px)" href="pc.css" />
    </head>

    减少css文件的解析,将所有的媒体查询代码写在同一个css文件中

    <head>
        <link rel="stylesheet" href="style.css" />
    </head>
    
    /*以下为css*/ @media screen and (max- 480px) { /* your css code */ } @media screen and (min- 481px) and (max- 600px) { /* your css code */ } /* more css code */

    以下是功能性示例网站:

    1. 不同的屏幕大小将导致页面的侧栏发生变化: http://hicksdesign.co.uk/
    2. 不同的屏幕大小将导致页面导航栏和图片行数发生变化:http://alistapart.com/d/responsive-web-design/ex/ex-site-FINAL.html
    3. 不同的屏幕大小将导致页面图片的分列不同:http://colly.com/
    4. 七牛后台官网,使用flex布局,不同屏幕变化,整体布局自适应:  https://portal.qiniu.com/signin

    所谓的自适应布局远远没有这么简单,并不是靠着在不同屏幕大小上对页面布局做一些调整就可以了。

    它还将面临下面的几个问题,

    • 不同屏幕尺寸下,图片(视频)等资源的展示如何处理
    • 在较小的屏幕尺寸下,往往需要对一些元素进行隐藏,这势必会造成流量(带宽资源)的浪费
    • 即使一套页面可以自适应好几种设备了,此时一旦有更新,需要同时维护各个设备相关的css代码并且要做好协调

    关于Media Query浏览器的兼容性,除了IE8及其以下的浏览器不支持,其他的主流浏览器基本上都支持

    一些PC端的媒体查询断点,断点,断点,重要的事情说三遍

    百度分辨率使用情况查询,可以查询网民地域分布,浏览器市场等,主要是可以查询哪种分辨率使用人数最多:http://tongji.baidu.com/data/screen

    /* 无论pc和手机都会显示响应式,不满足要求 (736px为iPhone6 plus横屏渲染宽度,但在pc上浏览器缩小到736px时也有效)*/
    @media screen and (max- 736px) { }
    
     /*pc上也会显示给手机做的响应式,不满足要求 (添加设备宽)*/
    @media screen and (max- 736px) and (max-device- 1920px) { }
    
     /* pc chrome浏览器拖动宽高为400*800时(max- 414px) and (orientation:portrait)有效,不符合要求;
    再拖动宽高为600*500时,screen and (max- 736px) and (orientation:landscape)有效,不符合要求。 */
    @media screen and (max- 414px) and (orientation:portrait), screen and (max- 736px) and (orientation:landscape) { }
    
    /* 加上更加严格的横竖屏状态  portrait竖屏 —— landscape横屏 */
    @media screen and (max- 414px) and (max-device- 1080px) and (orientation:portrait),
           screen and (max- 736px) and (max-device- 1920px) and (orientation:landscape) { }
    
    /* 最后一版,bug出现 MacBook pro(1280 * 800 2倍屏上*/
    @media screen and (max- 736px) and (max-device- 736px),
    screen and (max- 736px) and (-webkit-min-device-pixel-ratio: 2.0)  { }

    断点的另一种理解:特定的浏览器宽度下,页面元素出现效果不佳时添加断点。

    问题1:屏幕变宽,页面中可能会出现过多空白区域。应当调节元素宽度或者设置其他方式自动来补充页面留白.

    问题2:写死高度可能使内容超出模块范围,出现截取或者错版的问题。

    问题3:浮动容易导致错版。

    问题5:按钮、图片使用一致的对齐方式。

    知名互联网公司 移动端字体大小

    类型基准字体字体区间
    国外官网类 18~16px 大字体 ≈30px 标题字体 22px~18px正文字体 18~14px底部最小字体 14~12px
    网购类 14~12px 标题 16px正文 14~12px底部最小字体 12px
    国内媒体类 16px 标题 22px~18px正文 18~16px附加信息 12px底部最小字体 12px

    行高为 1.3、1.35、1.45、1.5

    参考链接:

    http://www.w3ctech.com/topic/874

    http://blog.gejiawen.com/2015/05/18/css3-media-query-and-responsive-design/

  • 相关阅读:
    进制转换问题
    奶牛野炊
    BFS
    深搜DFS
    Map容器之热血格斗场
    衣服尺码
    BZOJ2789 [Poi2012]Letters
    BZOJ1098 [POI2007]办公楼biu
    BZOJ1753 [Usaco2005 qua]Who's in the Middle
    BZOJ2442 [Usaco2011 Open]修剪草坪
  • 原文地址:https://www.cnblogs.com/baiyygynui/p/5903749.html
Copyright © 2011-2022 走看看