css-secrets
Table of Contents
Chapter 1: Introduction
Web standards: friend or foe?
The standards proess
- 和常识不同,W3C(World Wid Web Consortium)并不是自己来制定standard,而是扮演 了东道主的角色,再确定了某些'基本限定'和'远景规划'之后,邀请其他组织个人来书 写规范本身
- CSS specification就是被CSS Working Group这个组织来书写的,这个Group现在有98
名成员,其成员分布是:
- 86名来自W3C member companies(88%)
- 7名业界专家(7%)
- 5名W3C staff member(5%)
- 所以来自W3C member companies的占据绝大多数,这些companies包括:
- browser 提供商
- 流行网站
- 研究机构
- 广义上的科技公司
- W3C member company都是要付费的,从而让W3C的规范能够'公开免费'的分发
- 一个广为流传的的误解就是:W3C会创建非常高的标准,然后让比较差的浏览器去"追赶", 但是从CSS Working Group的成员组成我们就会发现,这肯定不是真的
- 另外一个误解就是规范是"关门拍脑袋"创建的,其实不是的,规范是公开指定,并且邀请 了专家进行评测的
- 每一个specification都要经历如下的几个步骤:
- Editor's Draftr(ED): 第一个阶段没有特定的要求,主要是手机spec editor的想 法
- First Public Working Draft(FPWD): spec第一个publish的版本主要是为了来接 受公众的反馈
- Working Draft(WD): 会有很多个WD,每个都会比前一个好一点
- Candidate Recommendation(CR): 这是被认为相对稳定的版本,一般这个时候implementation 和test都要开始了
- Proposed Recommendation(PR): W3C member对spec提出反对意见的最后机会.但是 这个很少发生
- Recommendation (REC): W3C specification的最后stage
CSS3, CSS4, and other mythical creatures
- CSS1是非常短并且简单的specification,发表于1996年,只有68页A4纸
- CSS2,发表于1998年,对CSS1进行了更加严格的定义,规范就已经非常长了480页A4纸
- CSS2.1的开发过程当中,CSS WG意识到CSS的特性太多了,不太适合放到一个单独的specification 了,所以他们决定把CSS分成几个不同的specification,每个都由于自己的version,
- 这样不仅仅能够缩短specification的长度,而且每个specification只需要负责对自己
前面的版本进行兼容.所以从CSS2.1往后,出现了两个阵营:
- 对CSS2.1之前就有的特性进行扩展,那么必定要兼容CSS1, CSS2, CSS2.1,这些规范
即便被分成了几个不同的规范,还是依然需要各自向前兼容.版本也就自然可以叫做3.
常见的有
CSS Syntax CSS Cascading and Inheritance CSS Color Selectors CSS Backgrounds & Borders CSS Values and Units CSS Text CSS Text Decoration CSS Fonts CSS Basic User Interface
- 对CSS2.1之前都不存在的特性,自然没必要进行向前兼容,版本就从1开始,常见的有
CSS Transforms Compositing and Blending Filter Effects CSS Masking CSS Flexible Box Layout CSS Grid Layout
- 对CSS2.1之前就有的特性进行扩展,那么必定要兼容CSS1, CSS2, CSS2.1,这些规范
即便被分成了几个不同的规范,还是依然需要各自向前兼容.版本也就自然可以叫做3.
常见的有
- 换句话说,虽然现在CSS3这个词叫的火热,但是其实没有一个叫做CSS3的specification
来定义其所有的内容(就像CSS1, CSS2, CSS2.1一样).CSS3其实也是上面说的两大类
specification的合称:
- 兼容CSS2.1以前的,版本确实是3的多个规范
- 不需要兼容CSS2.1以前的,版本是1的包含新特性的,多个规范
A story of ice, fire, and vendor prefixes
- 在标准开发领域,永远有一个代沟:
- standard group需要开发者提供切实有效的的specification
- 开发者却并不热衷于那些production环境下面并不能够使用的东西
- 而当新的科技在production里面完全能够使用的时候,WG又得把他们设计的和老的 代码兼容(所以开发者老的代码一直能用,也就谈不到去测试新科技)
- 为了解决这个代沟,采取了很多方式,但是效果并不理想.最常见的一个方式是vendor
prefix:就是每个浏览器都可以使用自己的prefix 来实现"实验特性":
- -moz-代表firefox
- -ms-代表IE
- -o-代表Opera
- -webkit- 代表Safari