大家好,我是IT修真院深圳分院第4期学员梁耀,一枚正直纯洁善良的web程序员。
今天给大家分享:渐进增强和优雅降级的区别【css-15】
分享人:梁耀
一、背景介绍
在前端开发过程中,如果有注意的话,发现有些写css3属性时,兼容性的写法顺序不太一样。比如transform属性,有些把transform放在前面有些是放在后面,这就引出了两个概念:优雅降级和渐进增强。
渐进增强和优雅降级这两个概念是在css3出现之后火起来的。由于低级浏览器不支持css3,但是也不能因噎废食而放弃css3。所以就产生了一种解决方式,即在高级浏览器中使用css3,而在低级浏览器只保持最基本的功能,这样就能皆大欢喜了。
二、知识剖析
1、什么是渐进增强?
就是一开始就针对低版本的浏览器构建页面,完成最基本的功能,然后再针对高级浏览器进行效果,交互,追加各种功能以达到更好用户体验。其实也就相当于向上兼容。
2、什么是优雅降级?
一开始就构建站点的完整功能,然后针对浏览器测试和修复。比如一开始使用 CSS3 的特性构建了一个应用,然后逐步针对各大浏览器进行 hack 使其可以在低版本浏览器上正常浏览。也就相当于向下兼容。
三、常见问题
优雅降级(Graceful Degradation)和渐进增强(Progressive Enhancement)有什么区别?
四、解决方案
优雅降级
优雅降级观点认为应该针对那些最高级、最完善的浏览器来设计网站。而将那些被认为“过时”或有功能缺失的浏览器下的测试工作安排在开发周期的最后阶段,并把测试对象限定为主流浏览器。在这种设计范例下,旧版的浏览器本认为仅能提供“简陋却无妨”的浏览体验。你可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们关注的焦点,因此除了修复较大的错误之外了,其它的差异将被直接忽略。这就有一种“谁让你们那么差,作为吊车尾还不赶快自己努力赶上来”的意味在里面。
渐进增强
渐进增强观点认为应该关注内容本身。内容是我们建立网站的诱因。有的网站展示它,有的则收集它,有的寻求,有的操作,还有的网站甚至会包含以上的种种,但相同点是它们都涉及到内容。这使得渐进增强成为一种更为合理的设计范例。这就有一种“一个也不能落下”的人道主义精神在里面了。虽然你版本低,但是也不能放弃你。
五、编码实战
这两个概念看起来其实差别也没那么大,似乎也就是顺序不同而已。但是有时候,顺序不同,相同属性产生的作用是不同的。比如border-radius属性和-webkit-border-radius属性,当属性值超过一个参数值的时候,两个属性产生的作用是不同的。看代码。
六、扩展思考
渐进增强和优雅降级如何抉择?
如果软件开发的预算和时间充足,就不存在抉择的问题,可以两者都调整到一个最佳状态。然而现实中实际上要么开发周期短,要么开发预算少,或者二者兼而有之,那么如何抉择?
1、如果低版本用户居多,当然优先采用渐进增强的开发流程。
2、如果高版本用户居多,为了提高大多数用户的使用体验,当然优先采用优雅降级的开发流程。
然而事实情况是怎么样的呢?绝大多数的大公司都是采用渐进增强的方式,因为业务优先,提升用户体验永远不会排在最前面。例如:新浪微博网站前端的更新,拥有这种亿级用户的网站,绝对不可能追求某个特效而不考虑低版本用户可不可用,一定是确保低版本到高版本的可访问性,再去渐进增强,采用新功能给高版本用户提供更好的用户体验。
但也不是没有反例。如果你开发的是一款面向青少年的软件(或网站),你知道这个群体的人总是喜欢尝试新事物,总是喜欢酷炫的特效,总是喜欢把它们的软件更新到最新版本(而不像我们老一辈的用户)。面对这种情况,优雅降级的开发流程是“坠吼的”。
七、更多讨论
对于渐进增强和优雅降级你的看法是什么?
什么是浏览器内核?
浏览器内核主要指的是浏览器的渲染引擎;JS 引擎则是解析 Javascript 语言, 执行 javascript 语言来实现网页的动态效果。
常见的浏览器内核可以分这四种:Trident(IE内核)、Gecko(Firefox 内核)、Blink(chrome)、Webkit(Safari)。。
8.参考文献
Q1:
A1:
主要还是一个开发理念上,向上兼容还是向下兼容
Q2:
A2:
实际开发过程中,很多时候都没有充足的开发时间和开发资金,大多数公司
都是使用渐进增强的方式,然后在后期的开发迭代中逐渐增加比较酷炫的效果
Q3:
A3:
http://www.zhangxinxu.com/wordpress/2010/09/%E9%9C%80%E8%AD%A6%E6%83%95css3%E5%B1%9E%E6%80%A7%E7%9A%84%E4%B9%A6%E5%86%99%E9%A1%BA%E5%BA%8F/
Q4:
A4:
webstrom自带的快捷方式,