UP | HOME

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
      
  • 换句话说,虽然现在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