素材牛VIP会员
渐进增强和优雅降级之间的有什么不同?
 tu***23  分类:Html5  人气:1016  回帖:4  发布于6年前 收藏

弱弱的问一下,求牛人指点~

讨论这个帖子(4)垃圾回帖将一律封号处理……

Lv3 码奴
雷***y Web前端工程师 6年前#1

更合适的说话是,渐进增强是保证基本效果的情况下增强效果,优雅降级是保证最恶劣情况下的基本效果

Lv6 码匠
lo***ou 职业无 6年前#2

progressive enhancement === 渐进增强

graceful degradation === 优雅降级

参考文献:
http://www.cnblogs.com/mofish/p/3822879.html
http://www.zhangxinxu.com/wordpress/tag/%E6%B8%90%E8%BF%9B%E5%A2%9E%E5%BC%BA/
https://svonme.gitbooks.io/web/content/css/css_pegd.html
http://blog.csdn.net/xiongzhengxiang/article/details/7999525

Lv6 码匠
驱***森 技术总监 6年前#3

广义来说,其实要定义一个基准线,在此之上的增强叫做渐进增强,在此之下的兼容叫优雅降级。这个基准线对于我,是允许使用javascript、cookie和css的IE8浏览器。

不过狭义而言,渐进增强一般说的是使用CSS3技术,在不影响老浏览器的正常显示与使用情形下来增强体验,而优雅降级则是体现html标签的语义,以便在js/css的加载失败/被禁用时,也不影响用户的相应功能。

渐进增强的例子:

  • transition属性,用于在某个数值属性突然改变的时候,在一定时间段里面输出中间的值,类似于jQuery.animate实现的动态效果。

有何好处呢?使用jQuery.animate做动画的时候,是全浏览器兼容的,对于渲染效率低下、时不时有重绘bug的IE6、IE7,只会造成“页面卡”的感觉,并不会因此增强用户体验,若使用transition属性来做动画,则IE6~9是瞬间变化(并不会造成任何布局上的问题),而现代浏览器则是匀变。

虽然没有数据支持,但我一直觉得,用户的配置越好,他们使用现代浏览器的可能性更高,因此我们可以对使用现代浏览器的用户给予更好的体验。针对更现代的浏览器(通常这意味着更高的用户配置)做相应增强,并且不会影响旧浏览器的正常运行,大概就是渐进增强的意义吧。

优雅降级的例子:

  • 假如你写了一个表单,没有用到<input type="submit">表单元素,用了一个<a>标签的click事件做提交,但如果Javascript被禁用了怎么办?

使用如下的文档结构,就可以在javascript被禁用时,依然可以提交。

<form>
    <input type="text">
    <input type="submit">
</form>

优雅降级需要正确地体现HTML标签的语义,符合“浏览器的预期”。让你的网页在各种情况—下——包括降级(javascript被禁用,css传输失败等等)的情形都可以运作良好。这是我理解的优雅降级的意义。

P.S. 其实优雅降级和渐进增强都是页面的加分项,是针对技术的一种形而上的要求。保证尽可能多的用户都能正常使用网站是第一步,在此之上才需要考虑降级的极端情形和现代浏览器的体验增强。

Lv6 码匠
so***t0 CEO 6年前#4

渐进增强 是向前(上)兼容

优雅降级是向下兼容

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取