美文网首页IT修真院-前端
渐进增强和优雅降级之间的区别

渐进增强和优雅降级之间的区别

作者: inh_ | 来源:发表于2017-08-31 21:49 被阅读0次

渐进增强和优雅降级之间的区别

大家好,我是IT修真院成都分院第7期的学员韩建名,一枚正直纯洁善良的WEB前端程序员。

今天给大家带来的是:渐进增强和优雅降级之间的区别

目录

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.拓展思考

7.课后讨论

8.参考文献

1.背景介绍

渐进增强和优雅降级是在CSS3出现之后才火起来的。由于低级浏览器,(特)比(别)如(是)IE6等,不支持CSS3的浏览器,但是CSS3的样式又特别优秀不忍放弃 ,所以在高级浏览器中应用CSS3样式,在低级浏览器只保证基本功能。

“渐进增强”是被Steven Champeon创造于2003年3月11日在奥斯汀的SXSW互动大会,并于2003年3月和6月间通过一系列Webmonkey教程文章的公布。 (我找了半天资料,翻了下英文文章也只找到这段历史,无奈脸),谷歌公司是很支持这种开发方式的啊,我认为渐进增强不仅是一个前端开发思想,更加是一个程序开发思想。

2.知识剖析

一,什么是渐进增强

在网页开发中,渐进增强认为应该专注于内容本身。一开始针对低版本的浏览器构建页面,满足最基本的功能,再针对高级浏 览器进行效果,交互,追加各种功能以达到更好用户体验,换句话说,就是以最低要求,实现最基础功能为基本,向上兼容。以css为例,以下这种写法就是渐进增强。

.box {

-webkit-border-radius: 10px;

-moz-border-radius: 10px;

border-radius: 10px;

}

二,什么是优雅降级

在网页开发中,优雅降级指的是一开始针对一个高版本的浏览器构建页面,先完善所有的功能。然后针对各个不同的浏览器进行测试,修复,保证低级浏览器也有基本功能 就好,低级浏览器被认为“简陋却无妨 (poor, but passable)” 可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较 大的错误之外,其它的差异将被直接忽略。也就是以高要求,高版本为基准,向下兼容。同样以css为例,优雅降级的写法如下。

.box {

border-radius: 10px;

-moz-border-radius: 10px;

-webkit-border-radius: 10px;

}

三,渐进增强和优雅降级的区别

讲到这里,有同学肯定觉得这两者好像区别不大,不就一个正着写,一个倒着写么?实现的效果不差不多?

我看完基本概念之后也很懵逼啊,不就是一个向上兼容,一个向下兼容么,实现的效果不都一样吗?有啥子区别嘛!

后来深入了解了之后才发现这两者区别还是大大的有的。

容我一一道来呀!

从成本出发

1.如果你采用渐进增强的开发流程,先做一个基本功能版,然后针对各个浏览器进行渐进增加,增加各种功能。相对于优雅降级来说,开发周期长,初期投入资金大。 你想一下不可能拿个基本功能版给客户看呀,多寒酸,搞不好一气之下就不找你做了,然后就炸了。但是呢,也有好处,就是提供了较好的平台稳定性,维护起来资金小, 长期来说降低开发成本。

2.那采用优雅降级呢,这样可以在较短时间内开发出一个只用于一个浏览器的完整功能版,然后就可以拿给PM找客户谈呀,可以拿去测试,市场试水呀,对于功能尚未确定的 产品,优雅降级不失为一种节约成本的方法。

从技术出发

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

1.很久以前:浏览器前缀CSS3和正常CSS3都不支持;

2.不久之前:浏览器只支持前缀CSS3,不支持正常CSS3;

3.现在:浏览器既支持前缀CSS3,又支持正常CSS3;

4.未来:浏览器不支持前缀CSS3,仅支持正常CSS3.

.transition { /*渐进增强写法*/

-webkit-border-radius:30px 10px;

-moz-border-radius:30px 10px;

border-radius:30px 10px;

}

.transition { /*优雅降级写法*/

border-radius:30px 10px;

-moz-border-radius:30px 10px;

-webkit-border-radius:30px 10px;

}

从技术出发

按理说这两种写法效果应该是一样的,但是我们现在浏览器停留在操蛋的第三阶段,也就是现在,既支持前缀写法,又支持正常写法,这样就要出问题了。

当属性超过一个参数值的时候,不同属性产生的作用是不一样的!

点击链接查看效果

可以看到,采用优雅降级的写法,如果一个浏览器同时支持前缀写法和正常写法,后面的旧版浏览器样式就覆盖了新版样式,出现一些奇怪的问题 ,但是用渐进增强的写法就不存在这个问题。这种属性不止border-radius一个,所以为了避免这个不必要的错误,建议大家都采用渐进增强的写法。

3.常见问题

渐进增强和优雅降级如何抉择

4.解决方案

如果开发时间充裕,开发资金到位,就不存在抉择这个问题了,肯定是渐进增强好呀!

但是现实往往很骨感。

这个时候,就要看你开发产品的受众,受众使用的客户端。如果受众年龄覆盖面广,客户端从移动到平板到电脑,比如淘宝这种页面,那没得选,老老实实选渐进增强。

如果受众客户端单一,例如一个移动端页面,再渐进增强PC端就没那么重要了。

各有优势,但现实是绝大多数公司采用的都是渐进增强方式,毕竟业务优先,体验不会凌驾在业务上。

开发个人网站?随便你怎么用啦,你开心就好咯。

5.编码实战

这节没啥可实战的,或者说实战起来太大,大家码代码的时候都试试就好。

6.课后讨论

大家学习过程中有没有遇到其他类似如上的border-radius的属性?

7.参考文献

《需警惕css3属性的书写顺序》 --张鑫旭

《认识优雅降级和渐进增强》 --Angus

《渐进增强 VS 优雅降级》 -- 康斌

鸣谢

感谢大家观看


css渐进增强和优雅降级_腾讯视频

相关文章

  • 渐进增强和优雅降级之间的区别

    一、背景介绍 在前端开发过程中,如果有注意的话,发现有些写css3属性时,兼容性的写法顺序不太一样。比如trans...

  • 渐进增强和优雅降级之间的区别

    渐进增强和优雅降级之间的区别 大家好,我是IT修真院成都分院第7期的学员韩建名,一枚正直纯洁善良的WEB前端程序员...

  • 面试题

    1.JavaScript中面向对象中继承的实现 2.能描述下渐进增强和优雅降级之间的不同吗? 优雅降级:Web站点...

  • 渐进增强和优雅降级的区别

    什么是渐进增强和优雅降级呢? 渐进增强 :针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行...

  • 优雅降级和渐进增强的区别

    前在看一些css3效果demo的时候,发现有些写css3属性时,兼容性的写法顺序不太一样,比如transition...

  • CSS3学习笔记(技术胖)

    标签(空格分隔): CSS3 前端 技术胖 面试题 渐进增强和优雅降级 答:渐进增强是先满足大部分浏览器;优雅降级...

  • 前端面试题终结版

    1.渐进增强 (progressive enhancement) 和优雅降级 (graceful degradat...

  • 面试准备之JS

    常规题目 1.渐进增强和优雅降级 优雅降级:一开始就构建整个网站的完整功能,然后针对低版本浏览器进行兼容。渐进增强...

  • 什么叫优雅降级和渐进增强?

    什么叫优雅降级和渐进增强? 渐进增强 progressive enhancement: 针对低版本浏览器进行构建页...

  • web前端性能优化

    什么是渐进增强和优雅降级?渐进增强(progressive enhancement):针对低版本的浏览器进行构建页...

网友评论

    本文标题:渐进增强和优雅降级之间的区别

    本文链接:https://www.haomeiwen.com/subject/pflcjxtx.html