[css] 你知道CSS的标准发布流程吗?

随着 CSS 3 的广泛应用,很多新的 CSS 属性层出不穷,有很多陌生的 CSS 属性出现,所以经常需要去学习新的 CSS 属性。新的属性往往介绍文章不多,所以有时候就需要去看看官方文档,此时会发现官方文档有好几个版本,看下图:当初学 flex-box 的时候就发现有好多种写法,还好官方文档开头有标明那些文档时最新的。不过此时我萌生了去了解 CSS 标准流程的想法,我想作为一个合格的 CSSER 也应该去了解吧。这里讲到的知识基本来自 CSS-tricks 上 CHRIS COYIER 的一篇文章:https://css-tricks.com/css-standards-process/ 。CSS 的标准化流程由 W3C Cascading Style Sheets Working Group (CSSWG)——W3C层叠样式列表小组,由浏览器商,大学,大公司(google,IBM等),以及独立CSS专家组成。W3C 本身并不制定标准,而是作为一个论坛式的平台,接收来自小组成员的提交,并通过会议来商讨制定标准,所有的提交以及讨论都是公开透明的,可以在 W3C 网站上看到会议的记录,标准确定一般有6个阶段,其中两个是过渡阶段:1. 编辑草案 Editor's Draft (ED)这个是规范的开始阶段,一个CSS属性或者选择器被提出来,并在CSSWG内部研究。如果小组成员同意这个属性可以正式推出,它就能进入下一阶段。2、工作草案 Working Draft (WD)编辑草案后是工作草案,标准的设计阶段。小组反复处理来自 CSSWG 内部和来自小组外部的反馈,这个阶段有两个结果:一是可能会因为技术困难或者可能会引起其他问题而使新属性被完全拒绝;二是规范会通过这个阶段,并会作为第一次公开工作草案( First Public Working Draft (FPWD))发布,后面还会有数个工作草案,会处理来自 CSSWG 内部和小组外部更广泛社会的反馈。3、过渡-最后通告工作草案 Transition – Last Call Working Draft (LCWD)这是第一个过渡阶段,当规范开始考虑从工作草案进入到下一个阶段时,将会对新属性的一些小改动的反馈设置一个截止日期,LCWD 即是日期截至后最后的一次公开草案处理。注:最重要的阶段是 ED, WD, and CR(下面会讲到的),其他阶段不是很重要。4. 候选推荐标准 Candidate Recommendation (CR)规范会在这个阶段通过完整的测试,测试人员来自 CSSWG 以及被选为实现这个规范的浏览器生产商(Chrome, Safari, Firefox, Opera, 等等)。为了继续进入下一阶段,CSSWG 会推出两个正确的实现规范。5. 过渡-建议推荐标准 Transition – Proposed Recommendations (PR)当到达这个阶段,W3C全球资源小组:W3C咨询委员会(W3C Advisory Committee),决定这个规范是否会继续进入下一个阶段。这个阶段一般很少有异议出现,所以也是一个过渡阶段而已。6.推荐标准 Recommendation (REC)如果规范到达这个阶段,说明规范已经考虑完备并可以让浏览器商实现,W3C 和 CSSWG 对这个规范的讨论处理不再活跃,只做一些必要的维护。注:推荐标准阶段其实不是一个理想的状态,而是一个规范的坟墓,浏览器并不会等到这个阶段才去实现它,而是在 CR 阶段就会实现这个规范。为什么说是坟墓呢,因为到达 REC 阶段后,规范会止步不前,而不是变得稳定。因为在 REC 阶段 CSSWG 并不会投入精力去修复新出现的错误,所以错误会不断积累,而新版本的规范已经在开发了,老的规范已经失去了继续发展的活力以及意义,留下的问题就只能通过 hack 去弥补,同时会有新的属性去代替它实现更好的功能。那什么时候规范才是稳定的呢?文章中有引述了 Tab Atkins Jr (google团队成员,也是 CSSWG 以及 W3C 的成员)的一段话,内容大概是:规范的稳定性基本和它所在的流程阶段没有关系。当规范特性已经开始传播开来,并因为向后兼容性不能改变时,它才是稳定的,这个阶段可能会在 ED 规范阶段或者 CR 阶段,这才是稳定性评判的正确方法,而不是 W3C 的标准发布流程。说到这里,作者也提到了怎样根据 CSS 新属性的稳定性情况去使用它,避免跳坑,其实就是能够实现渐进增强与优雅降级。这里不得不提到一个有名的网站 http://caniuse.com 估计这个网站大多数人都会用到了,简直是 CSSER 的福音啊,通过这个网站,当键入某个属性时,可以在下面的resources标签很快速地找到它的官方文档以及很多最新的学习文章,同时了解到到一些现有的使用问题(issues)。举个例子,比如键入flex时,下面有这样的标签:里面有来自css-trick、github等著名网站的文章,很多都是比较新,并且写得很好的文章。 这里还有个小常识,就是关于 CSS 3 的这个命名,Tab Atkins Jr 在文章 A Word About CSS4 代表 CSSWG 做了阐述,主要内容就是 CSS 3 代表了 CSS 2.1 后新增的 CSS属性,而且不会有 CSS4 这样的东西出现。下面是我看完后结合文章内容以及自己的一些理解,不想看原文的可以稍微了解一下。可能理解不是很到位,不过应该不会偏颇太多:CSSWG 想结束 CSS 2.1 这个版本时,发现 “versions”(版本)这个东西不好用,因为一旦使用版本来发布 CSS 时,CSS 变得很难维护,发展也会变慢。结合上面 CSS 的标准发布流程以及现在 CSS 的使用情况,不难想到确实是这样。因为 CSS 的整体性不强,CSS 属性都是为了实现某个效果单独被提出并反馈,和其他提出的属性并没有什么交集;有的属性一直在用不需要什么新的更新,而有的属性可能很快要被淘汰,所以以一整个版本去发布 CSS 很不科学。基于这样的想法,CSSWG 决定把 CSS 分成很多独立的小模块,每个模块只包含一个主要的特性(feature),可以自己单独升级开发,为什么要分成小的只包含少数特性的模块呢?这样就不会因为一个模块包含太多特性,然后因为某个特性特别棘手不好解决而阻碍整个模块其他特性的发展升级。因为这个想法是在结束 CSS 2.1 版本的时候决定的,那么现在 CSS 就要以模块来整理一下,也要相应定一些等级(level)。规则是这样的: 1、如果模块在 CSS 2.1 就有相关的内容,那么这些模块就从 level 3 开始。2、如果是完全新的属性(比如 Flexbox),就直接从 level 1 开始。3、一个模块的级别和它所在 CSS 的版本无关,即不管它是 CSS 2.1 的内容还是完全新的属性。因为模块的概念是新提出来的,所以只要是模块,就都属于 CSS 3(或者也可以说都是 CSS),不管它们处于什么模块等级。4、可能会看到类似 css4-backgrounds 这样的写法,其实代表的是 CSS Background & Borders Level 4,即4表示的是模块的等级。后来发现大漠前辈也写了相关文章,内容更全面,讲到了浏览器前缀的问题。我也参考了一下,大家可以点下面的参考链接去看看。

个人简介

我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论

主目录

与歌谣一起通关前端面试题

[css] 你知道CSS的标准发布流程吗?相关推荐

  1. 创建符合标准的、有语意的HTML页面——ASP.NET 2.0 CSS Friendly Control Adapters 1.0发布...

    ASP.NET 2.0提供了非常多的Web开发中常用到的复杂控件,例如Menu.GridView.Login等.虽然这些控件使用方法极为简单,且功能异常强大,但若你查看一些由这些控件所生成的HTML代 ...

  2. css html 对错号,HTML_DIV+CSS编码时易犯的错误,CSS+DIV是网站标准(或称“WEB - phpStudy...

    DIV+CSS编码时易犯的错误 CSS+DIV是网站标准(或称"WEB标准")中常用的术语之一,通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为XHTM ...

  3. CSS布局系列一:标准、浮动、定位

    标准 display block:表示元素占据全部可用宽度的元素,并且在其前后都会换行,常见标签有div.h.p inline:表示元素在一行中水平布置,可以使用水平内边距.边框和外边距.但是,垂直内 ...

  4. html生成无序列表,CSS无序列表创建的标准菜单效果代码

    本文实例讲述了CSS无序列表创建的标准菜单效果代码.分享给大家供大家参考.具体如下: 这是一款用LI无序列表创建的标准CSS菜单,这是国外一个网站的CSS制作教程,这里重新整理了一下,去除了广告代码, ...

  5. jenkins配置记录(2)--代码发布流程

    在我们的日常运维工作中,使用jenkins来完成业务代码发版上线是至关重要的一环. 前面已经提到在jenkins上添加用户权限的操作,今天重点说下如何在jenkins下构建项目工程进行代码发布? 在此 ...

  6. 提高微信小程序的应用速度的常见方式有哪些? 小程序怎么实现下拉刷新? 简述微信小程序原理? 小程序的发布流程(开发流程)分析下微信小程序的优劣势?小程序授权登录流程? 小程序支付如何实现

    小程序部分常见面试题 提高微信小程序的应用速度的常见方式有哪些? 提高页面加载速度 用户行为预测 减少默认data的大小 组件化方案 分包预下载 小程序与原生App相比优缺点? 优点: 基于微信平台开 ...

  7. iKcamp出品|微信小程序|小试牛刀(视频)+发布流程|基于最新版1.0开发者工具初中级教程分享

    iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...

  8. css做名单,css基础教程:2021年适合新手的7个CSS入门教程推荐

    上一篇我们向同学们推荐了5个html入门教程,本篇我们继续向同学们精选推荐一些适合新手学习的CSS基础入门教程,欢迎学习! 首先我们来介绍什么是CSS?以及CSS的作用 CSS 是一种标准样式表语言, ...

  9. css模块化及CSS Modules使用详解

    什么是css模块化? 为了理解css模块化思想,我们首先了解下,什么是模块化,在百度百科上的解释是,在系统的结构中,模块是可组合.分解和更换的单元.模块化是一种处理复杂系统分解成为更好的可管理模块的方 ...

最新文章

  1. django 连接mysql 数据库
  2. deconv--反褶积和多项式除法
  3. 探究防抖(debounce)和节流(throttle)
  4. spring @Value注解#和$区别
  5. 输入输出流(I/O)
  6. 四川传媒学院计算机应用技术专业,2017年四川传媒学院开设哪些专业(高职/专科)...
  7. 直观理解Hilbert空间是什么?
  8. 2020-04-17-E-prime常见问题汇总
  9. Adobe illustrator如何修改默认字体
  10. 基于微信小程序的扫码签到系统源码
  11. java gps 纠偏_【实测可用】GPS纠偏算法-Java版
  12. 不花钱也能使用迅雷的高速通…
  13. Birdman Quotes
  14. VMware虚拟机文件格式详解
  15. 基于STM32单片机智能RFID刷卡汽车位锁设计(论文
  16. 抓包工具 HTTP Analyzer v7.5 的下载,安装,使用,破解说明
  17. 2017年第四八届C/C++ B组蓝桥杯省赛真题
  18. A connection attempt failed because the connected party did not properly respond after a period of……
  19. 初识V4l2(二)-------浅析video_register_device
  20. 极大似然估计的理解 为什么要取似然函数最大值 似然函数的意义是什么?

热门文章

  1. 服务器创建多个dhcp服务_如何在15分钟内创建无服务器服务
  2. 多重插补 均值插补_Feature Engineering Part-1均值/中位数插补。
  3. vue动态绑定类样式ClassName知多少
  4. 2. Get the codes from GIT
  5. 略读《大教堂与市集》
  6. 单片机STM8S测量电压电路_单片机电路设计中的10个难点
  7. c 向html页面传值,html页面之间的传值,获取元素和方法的调用
  8. 父子沪c转大牌过户_机动车异地过户(转籍)
  9. linux 密码修改下次,问题:如何强制用户在下次登录Linux时更改密码
  10. WordPress获取当前分类ID的四种方法