渐进增强和优雅降级之间的有什么不同?

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

阅读 18.3k
4 个回答

广义来说,其实要定义一个基准线,在此之上的增强叫做渐进增强,在此之下的兼容叫优雅降级。这个基准线对于我,是允许使用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. 其实优雅降级和渐进增强都是页面的加分项,是针对技术的一种形而上的要求。保证尽可能多的用户都能正常使用网站是第一步,在此之上才需要考虑降级的极端情形和现代浏览器的体验增强。

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

优雅降级是向下兼容

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

推荐问题
宣传栏