简单地说,就是从css3开始,css规范就被拆成众多模块(module)单独进行升级,或者将新需求作为一个新模块来立项并进行标准化。因此今后不会再有css4、css5这种所谓大版本号的变更,有的只是css某个模块级别的跃迁。
引入模块化之前
按照css工作组的说法,css历史上并没有版本的概念,有的只是“级别”(level)的概念。比如,css3其实是css level 3,css2是css level 2,而css level 1当然就是css1。每个级别都以上一个级别为基础。
大家都知道,css1早就作废了。css2其实基本上也已经作废了。但是,css1、css2(以及css2.1)在当时都是一个大而全的规范。而且,css2在成为最终标准的时候,w3c规范的流程里还没有定义cr这个阶段。
后来,w3c进一步完善了规范制定流程,要求每个规范都要经过以下五个阶段:
1. 工作草案
(wd,working draft)
2. 最终工作草案
(lc/lcwd,last call working draft)
3. 候选推荐
(cr,candidate recommendation)
4. 提议推荐
(pr,proposed recommendation)
5. 推荐标准
(rec,recommendation)
由于当初css2并没经过cr阶段,因此出现了很多问题。css工作组被无穷无尽的“改bug”搞得不厌其烦。结果,他们决定对css2进行一次修订,这就是css2.1(css level 2 revision 1)。
换句话说,css2.1其实只是css2的一个修订版,并没有实质性变化。有些css2中的内容,css工作组认为不够成熟,于是从css2.1中删除了。这些删除的内容被视为回退到流程的cr阶段——相当于需要“回炉”。(后来,这些内容基本都以css模块的方式,经过修订和增补,进入了css level 3。)
css2.1及之前的css规范把所有内容都写在一个文档里。随着css特性越来越多,越来越复杂,css规范的篇幅也越来越长。css2.1的pdf版有430页。这就给勘误和进一步升级带来了极大不便。因为文档不同部分升级的进度不可能强求一致。
于是,css工作组决定从css2.1之后开始采取模块化的路线。就是把需要升级的内容独立成模块拆分出来,新增的需求也以新模块的方式立项。从此以后,css就进入了level 3。
引入模块化之后
css采取模块化路线后,就有了三种模块,而且它们的命名方式非常值得注意。
css level 2原有模块:selector、color、values and units、backgrounds and borders等这些都是从原来css规范中拆出来的模块。这些模块的命名一开始就会从level 3开始,比如selectors level 3、css backgrounds and borders level 3 ,因为它们都是在css level 2的基础之上开始的。
新模块:multi-column layout、transitions、flexible box、transforms等都是后来新增的模块,以前css中不存在类似特性。因此它们的命名会从level 1开始,比如css transitions level 1、css flexible box module level 1。
当然,还有css2.1从css2中删除的内容。如前所述,“被css2.1删除的css2中的内容,被视为回退到cr阶段”,而其中大部分内容都会以css level 3的面目“转世”,一旦它们进入cr阶段,就会取代之前对应的内容成为新标准。
ok,上述任何模块的规范从wd推进到rec阶段,要么意味着新css模块诞生,要么意味着旧css模块重新焕发了生机!
希望下面这张图能更直观地说明css模块的命名:
模块还会有level 4或更高
css到level 3因为采取了“模块化”策略,本身不会再进化到level 4了。正因为如此,css理论上永远不会出现css4。但是,css中的某个模块是可以到level 4甚至更高级别的。比如,css color module就开始level 4的升级之旅了(https://www.w3.org/tr/css-color-4/)。
css snapshot 2017里是这么说的:
there is no css level 4. independent modules can reach level 4 or beyond, but css the language no longer has levels. (“css level 3” as a term is used only to differentiate it from the previous monolithic versions.)
没有css level 4。独立的模块可以到level 4或更高级别,但css这门语言不会再有这个级别。(“css level 3”作为一个概念,只是便于跟之前大而全的版本有所区别。)
以上就是你知道为什么css3以后不会有css4吗?的详细内容。