css3的渐进增强和优雅降级

这次给大家带来css3的渐进增强和优雅降级,css3渐进增强和优雅降级的注意事项有哪些,下面就是实战案例,一起来看一下。

渐进增强和优雅降级这两个概念是在 CSS3 出现之后火起来的。由于低级浏览器不支持 CSS3,但是 CSS3 特效太优秀不忍放弃,所以在高级浏览器中使用CSS3,而在低级浏览器
只保证最基本的功能。二者的目的都是关注不同浏览器下的不同体验,但是它们侧重点不同,所以导致了工作流程上的不同。

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

优雅降级(Graceful Degradation):一开始就构建站点的完整功能,然后针对浏览器测试和修复。比如一开始使用 CSS3 的特性构建了一个应用,然后逐步针对各大浏览器进行 hack 使其可以在低版本浏览器上正常浏览。

在传统软件开发中,经常会提到向上兼容和向下兼容的概念。渐进增强相当于向上兼容,而优雅降级相当于向下兼容。向下兼容指的是高版本支持低版本的或者说后期开发的版本支持和兼容早期开发的版本,向上兼容的很少。大多数软件都是向下兼容的,比如说Office2010能打开Office2007,Office2006,Office2005,Office2003等建的word文件,但是用Office2003就不能打开用Office2007,Office2010等建的word文件!

两者的区别:

优雅降级和渐进增强只是看待同种事物的两种观点。优雅降级和渐进增强都关注于同一网站在不同设备里不同浏览器下的表现程度。关键的区别则在于它们各自关注于何处,以及这种关注如何影响工作的流程。

优雅降级观点认为应该针对那些最高级、最完善的浏览器来设计网站。而将那些被认为“过时”或有功能缺失的浏览器下的测试工作安排在开发周期的最后阶段,并把测试对象限定为主流浏览器(如 IE、Mozilla 等)的前一个版本。在这种设计范例下,旧版的浏览器被认为仅能提供“简陋却无妨 (poor, but passable)” 的浏览体验。你可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较大的错误之外,其它的差异将被直接忽略。

渐进增强观点则认为应关注于内容本身。请注意其中的差别:我甚至连“浏览器”三个字都没提。内容是我们建立网站的诱因。有的网站展示它,有的则收集它,有的寻求,有的操作,还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。这使得渐进增强成为一种更为合理的设计范例。这也是它立即被 Yahoo! 所采纳并用以构建其“分级式浏览器支持 (Graded Browser Support)”策略的原因所在。

案例分析:

(1)代码

    .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;    }

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

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

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

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

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

(3)渐进增强的写法,优先考虑老版本浏览器的可用性,最后才考虑新版本的可用性。在时期3前缀CSS3和正常CSS3都可用的情况下,正常CSS3会覆盖前缀CSS3。优雅降级的写法,优先考虑新版本浏览器的可用性,最后才考虑老版本的可用性。在时期3前缀CSS3和正常CSS3都可用的情况下,前缀CSS3会覆盖正常的CSS3。

就CSS3这种例子而言,我更加推崇渐进增强的写法。因为前缀CSS3的某些属性在浏览器中的实现效果有可能与正常的CSS3实现效果不太一样,所以最终还是得以正常CSS3为准。如果你好奇究竟是什么属性在前缀CSS3和正常CSS3中显式效果不一样。

(4)如何抉择

根据你的用户所使用的客户端的版本来做决定。请注意我的措辞,我没有用浏览器,而是用客户端。因为渐进增强和优雅降级的概念本质上是软件开发过程中低版本软件与高版本软件面对新功能的兼容抉择问题。服务端程序很少存在这种问题,因为开发者可以控制服务端运行程序的版本,就无所谓渐进增强和优雅降级的问题。但是客户端程序则不是开发者所能控制的(你总不能强制用户去升级它们的浏览器吧)。我们所谓的客户端,可以指浏览器,移动终端设备(如:手机,平板电脑,智能手表等)以及它们对应的应用程序(浏览器对应的是网站,移动终端设备对应的是相应的APP)。

现在有很成熟的技术,能够让你分析使用你客户端程序的版本比例。如果低版本用户居多,当然优先采用渐进增强的开发流程;如果高版本用户居多,为了提高大多数用户的使用体验,那当然优先采用优雅降级的开发流程。

然而事实情况是怎么样的呢?绝大多数的大公司都是采用渐进增强的方式,因为业务优先,提升用户体验永远不会排在最前面。例如:新浪微博网站前端的更新,拥有这种亿级用户的网站,绝对不可能追求某个特效而不考虑低版本用户可不可用,一定是确保低版本到高版本的可访问性,再去渐进增强,采用新功能给高版本用户提供更好的用户体验。但也不是没有反例。如果你开发的是一款面向青少年的软件(或网站),你知道这个群体的人总是喜欢尝试新事物,总是喜欢酷炫的特效,总是喜欢把它们的软件更新到最新版本(而不像我们老一辈的用户)。面对这种情况,渐进增强的开发流程实为上选。

相信看了本文案例你已经掌握了方法,更多精彩请关注创想鸟其它相关文章!

推荐阅读:

CSS3中的transform功能详解

css3的动画序列animation

以上就是css3的渐进增强和优雅降级的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1609252.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 00:40:26
下一篇 2025年12月24日 00:40:30

相关推荐

  • css怎样做出六边形图片

    这次给大家带来css怎样做出六边形图片,css做出六边形图片的注意事项有哪些,下面就是实战案例,一起来看一下。 本文主要介绍了css实现六边形图片的示例代码,分享给大家,具体如下: 不说别的,先上效果:   用简单的p配合伪元素,即可‘画出’这幅六边形图片,原理是三个相同宽高的p,通过定位旋转拼合成…

    2025年12月24日 好文分享
    000
  • CSS做出图片背景填充的六边形

    这次给大家带来CSS做出图片背景填充的六边形,CSS做出图片背景填充的六边形的注意事项有哪些,下面就是实战案例,一起来看一下。 六边形的实现原理其实就是通过旋转三个重叠的矩形得到的,如下图所示: 这里为了得到一个正的六边形,两个矩形旋转的角度必须为-60deg和60deg,以及矩形高宽比必须是Mat…

    好文分享 2025年12月24日
    000
  • CSS3的calc() 方法怎么使用

    这次给大家带来CSS3的calc() 方法怎么使用,CSS3的calc()方法使用的注意事项有哪些,下面就是实战案例,一起来看一下。 下面一段代码给大家介绍css3中的calc()方法,具体内容如下所示: [Ctrl+A 全部选择 提示:您可先修改部分代码,再按运行] 如上代码,预览可以看出红色框超…

    好文分享 2025年12月24日
    000
  • 预处理器Sass如何使用

    这次给大家带来预处理器Sass如何使用,使用预处理器Sass的注意事项有哪些,下面就是实战案例,一起来看一下。 Sass 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了变量 (variables)、嵌套 (nested rules)、混合 (mixins)、导入 (inline i…

    好文分享 2025年12月24日
    000
  • CSS 垂直水平居中有哪几种方法

    这次给大家带来CSS 垂直水平居中有哪几种方法,CSS 垂直水平居中的注意事项有哪些,下面就是实战案例,一起来看一下。 CSS 居中对齐 代码中均省略了浏览器前缀 以下例子以我的个人的标准排序 当然也有更多的居中处理方法 但我觉得只有这5种方法是最完善的解决方案 flex 居中 优点:可对未知高度进…

    好文分享 2025年12月24日
    000
  • 怎样用css3实现冲击波效果

    这次给大家带来css3实现冲击波效果,css3实现冲击波效果的注意事项有哪些,下面就是实战案例,一起来看一下。 近日,很多浏览器按钮点击会出现以下冲击波效果,出于好奇,参考网上的资料,将这个效果研究实现下。 实现思路: 观察波由小变大,涉及的css3属性变化有width,height,left,to…

    2025年12月24日
    000
  • 纯CSS如何实现下拉菜单

    这次给大家带来纯CSS如何实现下拉菜单,纯CSS实现下拉菜单的注意事项有哪些,下面就是实战案例,一起来看一下。 本篇文章主要介绍了纯CSS实现下拉菜单的示例代码,分享给大家,具体如下: 将下拉菜单的ul高度设置为0,并且超出部分隐藏掉。 设置下拉菜单的高度添加过渡效果,高度为auto时过渡效果失效。…

    2025年12月24日
    000
  • css的进度条文字根据进度渐变

    这次给大家带来css的进度条文字根据进度渐变,css进度条文字根据进度渐变的注意事项有哪些,下面就是实战案例,一起来看一下。 本文介绍了css 进度条的文字根据进度渐变的示例代码,分享给大家,具体如下: 需求 1.进度条里面的文字需要根据进度的长度而变化 原理 用两个一模一样的样式的 p 重叠起来 …

    2025年12月24日
    000
  • css3绘制圆形loading转圈动画

    这次给大家带来css3绘制圆形loading转圈动画,css3绘制圆形loading转圈动画的注意事项有哪些,下面就是实战案例,一起来看一下。 如何绘制一个圆圆的loading圈 小程序里需要一个像下面的loading,原生的没有,引入别的组件库又太大,所有决定自己写个。 1.基本原理 动态的实现原…

    2025年12月24日
    000
  • 浅谈css网页的布局问题

    这次给大家带来浅谈css网页的布局问题,css网页的布局问题的注意事项有哪些,下面就是实战案例,一起来看一下。 1、左边固定,右边自适应布局的两种实现方式 效果图如下: 大屏展示: 小屏展示:   第一种实现方式通过负边距与浮动 实现左边固定,右边自适应的布局。 主要代码如下: .left{floa…

    2025年12月24日 好文分享
    000
  • 谈谈CSS中的几种选择器

    今天本文主要和大家谈谈CSS中的几种选择器 ,需要的朋友可以参考下,希望能帮助到大家。 1、通配符选择器 通配符选择器用“*”号表示,是所有选择器中作用范围最广的,能匹配页面中所有的元素 /*设置当前页面中所有标签的颜色为红色*/* {color: red;}  2、标签选择器 标签选择…

    好文分享 2025年12月24日
    000
  • 使用html和css实现康奈尔笔记

    这次给大家带来使用html和css实现康奈尔笔记,使用html和css实现康奈尔笔记的注意事项有哪些,下面就是实战案例,一起来看一下。 缘起 人家都说 康奈尔笔记 法,很好用呢,能抵抗遗忘曲线,让你的笔记事半功倍,有兴趣的同学自行百度哈。 网上有很多现成的模板,下载下来之后吧,看着好像在上面写英文可…

    好文分享 2025年12月24日
    000
  • CSS的子代选择符

    这次给大家带来CSS的子代选择符,使用CSS的子代选择符的注意事项有哪些,下面就是实战案例,一起来看一下。 后代选择符用于选取一个标签的所有后代,包括子代和孙辈等;而子代选择符只选取指定父辈的子代标签(指定标签元素的第一代子元素)。 子代选择符使用一个额外的符号(尖括号> )表明两个元素之间的…

    2025年12月24日 好文分享
    000
  • 纯css实现树形结构

    这次给大家带来纯css实现树形结构,纯css实现树形结构的注意事项有哪些,下面就是实战案例,一起来看一下。 本文我给大家介绍如何使用CSS和HTML就可以将一个多级无序列表的节点展现成树状结构。树状结构我们在很多项目中要应用,如公司组织架构图、无限级分类等等。 纯css实现属性结构 css实现属性结…

    2025年12月24日
    000
  • CSS实现手风琴布局

    这次给大家带来CSS实现手风琴布局,CSS实现手风琴布局的注意事项有哪些,下面就是实战案例,一起来看一下。 昨天在做一个旅游页面的项目,前端页面实现的过程中遇到这样一个需求。需要把一组图片形成手风琴的展示效果。认真的思考一遍后,决定就用普通的HTML+CSS就可以实现这个需求。今天趁着空闲时间稍微梳…

    2025年12月24日
    000
  • CSS3中的transform功能详解

    这次给大家带来CSS3中的transform功能详解,CSS3中transform功能的注意事项有哪些,下面就是实战案例,一起来看一下。 CSS3中的变形功能:在CSS3中可以利用transform功能来实现文字或图像的旋转、缩放、倾斜、移动着四种类型的变形功能。 1、如何使用transform功能…

    2025年12月24日 好文分享
    000
  • CSS怪异盒模型和标准盒模型如何使用

    这次给大家带来CSS怪异盒模型和标准盒模型如何使用,使用CSS怪异盒模型和标准盒模型的注意事项有哪些,下面就是实战案例,一起来看一下。 在html文档中,每个渲染在页面中的标签都是一个个盒子模型。 盒子模型又分为 : W3C标准的盒子模型 和 IE标准的盒子模型。 由于目前大部分主流的浏览器支持的是…

    2025年12月24日 好文分享
    000
  • 三种CSS截图的方法

    本文主要为大家分享三种CSS截图的方法 ,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧,希望能帮助到大家。 CSS截图图片的几种方式 原图: DIV   使用background-position:Xpx Ypx (图片左上角坐标) 配合width和height .p_bg { w…

    2025年12月24日 好文分享
    000
  • css实现图片未加载完成时占位显示实例分享

    通过css控制,可以实现加载网络图片时,未加载完成的时候显示本地一张占位图,加载完成后显示网络图片; 原理:通过在img标签的after伪元素上添加一张占位图,并且img都设置为position:relative;after设置position:absolute;img标签的src为网络图片,这样加…

    2025年12月24日
    000
  • 用CSS实现Tab页切换效果的示例代码_CSS教程_CSS_网页制作

    最近切一个页面的时候涉及到了一个tab切换的部分,因为不想用js想着能不能用纯css的选择器来实现切换效果。搜了一下大致有下面三种写法。 1、利用 :hover 选择器 缺点:只有鼠标在元素上面的时候才有效果,无法实现选中和默认显示某一个的效果 2、利用 a标签的锚点 + :target选择器 缺点…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信