什么是渐进增强与优雅降级

  服务器和浏览器是不同的。当服务器有新版本时,开发人员直接使用新版本的服务器提供服务即可;但是浏览器端,不同的用户使用的浏览器版本不同,型号差异大,我们不可能让用户强制更新,所以,浏览器端就需要考虑到所谓的渐进增强和优雅降级了。

       渐进增强(progressive enhancement):主要用户使用低版本浏览器的比较多,所以一开始针对低版本浏览器进行构建页面,完成了基本的功能。 然后针对高级浏览器进行效果、交互增强,功能追加等来达到更好的体验。

  优雅降级(graceful degradation):主要用户使用高版本浏览器的比较多,所以一开始就针对高版本构建了站点的完整功能, 然后针对低版本浏览器进行hack使得低版本浏览器也可以正常浏览。

渐进增强与优雅降级的共同点?

  两者都是为了更好的用户体验。 其中渐进增强是在低版本构建的基础上给高版本浏览器用户更好的体验; 优雅降级是在高版本用户构建的基础上让低版本用户也能使用基本的功能。

渐进增强与优雅降级的区别?

          构建基础不同。渐进增强是以低版本浏览器为基础构建的;优雅降级是以高版本浏览器为基础构建的。

如何选择?

  那么我们如何决定使用优雅降级和渐进增强呢?

  之前再谈到区别时说道渐进增强是说用户主要是低版本浏览器,那么我们就选用渐进增强的方案; 而用户主要是使用高版本浏览器,就选用优雅降级的方案。

  但是,事实上,大多数的厂家采用的方式都是渐进增强,因为很多公司网站的主页目的是业务为主,如果最基本的功能都实现不了,体验又怎么可能好呢?

渐进增强和优雅降级的适用场景?

  就目前来说,主要是针对CSS3的。 看如下两段代码的书写顺序,表示了我们开发的着重点:

.transition { /*渐进增强写法*/
-webkit-transition: all .5s;
-moz-transition: all .5s;
-o-transition: all .5s;
transition: all .5s;
}
.transition { /*优雅降级写法*/
transition: all .5s;
-o-transition: all .5s;
-moz-transition: all .5s;
-webkit-transition: all .5s;
}

  前缀CSS3(-webkit- / -moz- / -o-*)和正常的 CSS3 在浏览器中的支持情况是这样的:

  1. 很久以前:浏览器前缀CSS3和正常的CSS3都不支持。
  2. 不久以前:浏览器只支持前缀CSS3,不支持正常CSS3。
  3. 现在:浏览器既支持前缀CSS3,又支持CSS3。
  4. 未来:浏览器不支持前缀CSS3,仅支持正常CSS3。

 注意: css中需要知道的是 - 如果属性不可用,则不发挥任何作用,无影响;如果属性是相同的作用,则后者会覆盖前者。

      渐进增强的写法,优先考虑老版本浏览器的可用性,最后才考虑新版本浏览器的可用性。

    而优雅降级的写法,优先考虑新版本浏览器的可用性,最后才考虑浏览器的可用性。

   就CSS3来说,我们更加推荐渐进增强的写法。 

渐进增强与优雅降级 && css3中普通属性和前缀属性的书写顺序的更多相关文章

  1. css3渐进增强 VS 优雅降级

    印象中,渐进增强和优雅降级这两个概念是在 CSS3 出现之后火起来的.由于低级浏览器不支持 CSS3,但是 CSS3 特效太优秀不忍放弃,所以在高级浏览器中使用CSS3,而在低级浏览器只保证最基本的功 ...

  2. 浏览器兼容CSS渐进增强 VS 优雅降级如何选择

    由于低级浏览器不支持 CSS3,但是 CSS3 特效太优秀不忍放弃,所以在高级浏览器中使用CSS3,而在低级浏览器只保证最基本的功能.二者的目的都是关注不同浏览器下的不同体验,但是它们侧重点不同,所以 ...

  3. 渐进增强 VS 优雅降级

    渐进增强(Progressive Enhancement):一开始就针对低版本浏览器进行构建页面,完成基本的功能,然后再针对高级浏览器进行效果.交互.追加功能达到更好的体验. 优雅降级(Gracefu ...

  4. 兼容性/pollyfill/shim/渐进增强/优雅降级

    http://ued.ctrip.com/blog/browser-compatibility-testing-tools-in-firefox-compatibility-detector.html ...

  5. css考核点整理(十二)-能描述下你在项目中都用到了哪些符合逐渐增强和优雅降级的理念的技巧吗

    能描述下你在项目中都用到了哪些符合逐渐增强和优雅降级的理念的技巧吗

  6. CSS3中的counter和content属性,一些简单的内容显示就不需要JS去实现了

    HTML的代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www ...

  7. css3中强大的filter(滤镜)属性

    CSS3中强大的filter(滤镜)属性 博主最近在做网站的过程中发现了一个非常强大的CSS3属性,就是filter(滤镜)属性,喜欢p图的朋友看名字都应该知道这是什么神器了吧.当然,这个属性的效果肯 ...

  8. CSS3中的变形处理(transform)属性

    在CSS3中,可以利用transform功能来实现文字或图像的旋转.扭曲.缩放.位移.矩阵.原点这六种类型的变形处理,下面将详细讲解transform的使用. 变形--旋转 rotate() div. ...

  9. 总结·CSS3中定位模型之position属性的使用方法

    一.position元素介绍 position属性规定了元素的定位类型,通过定位,可准确地定义元素相对于其正常位置而应该出现的位置,或者是相对于父元素.另一元素和浏览器窗口等的位置. position ...

随机推荐

  1. java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java he

    tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:) 最简单的解决办法: 在ecl ...

  2. BZOJ 1008 [HNOI2008]越狱 (简单排列组合 + 快速幂)

    1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 10503  Solved: 4558[Submit][Status ...

  3. verilog基础--altera培训

    参数化 Localparam :与prameter一样,但不能被重写. Verilog-2001 格式, module mult_acc #(parameter size = 8 ) (...); 数 ...

  4. FIR IP

    (1)多通道系数处理 系数的格式 (1)       每组系数的长度必须一样长: (2)多组系数依次连接即可; 添加多组系数后会,FIR IP核在生成时会多出以下几个信号 .s_axis_config ...

  5. vivado用法

    声明为”DEBUG”,即使没有连接到其他模块,也不会被优化掉.但并不是所有的信号都是在声明为“debug”属性之后就不会优化掉. (2)同一个bank中能设置一个电平. (3)

  6. HBase Thrift2 CPU过高问题分析

    目录 目录 1 1. 现象描述 1 2. 问题定位 2 3. 解决方案 5 4. 相关代码 5 1. 现象描述 外界连接9090端口均超时,但telnet端口总是成功.使用top命令观察,发现单个线程 ...

  7. (网络流 模板 Edmonds-Karp)Drainage Ditches --POJ --1273

    链接: http://poj.org/problem?id=1273 Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total ...

  8. 网友写的解决uniGUI限制的方法

    群友写的解决uniGUI试用版限制修改SessionTimeOut,思路很精巧,贴过来分享,感谢朋友的奉献.当然,如果真正用uniGUI实做项目,买份正版是正道! var   UniServerOpt ...

  9. 实现EventHandler的监测

    的监测", "category":"", "tags":"", "publish":&qu ...

  10. 服务端JSON内容中有富文本时

    问题背景 由于数据中存在复杂的富文本,包含各种引号和特殊字符,导致后端和前端通过JSON格式进行数据交互引发前端JSON解析出错. 解决方案 后端将富文本内容 ConvertToBase64Strin ...