Page 36 - css揭秘
P. 36

数编辑在提到这个词时,指的是一个非正式的集合,它包括 CSS 规范第三
                    版(Level 3)再加上一些版本号还是 1 的新规范。尽管在哪些规范应该归入
                    CSS3 的问题上,编辑们达成了一定的共识,但我们也不得不面对现实:由
                    于 CSS 的各个模块在近些年里以不同的速度在推进,我们已经越来越难以
                    把这些规范以 CSS3、CSS4 这样的方式来划分了,而且这样也难以被大众理
                    解和接受。


                    冰与火之歌:浏览器前缀

                                                                      1①
                        在标准的开发过程中,总是有大大的“第 22 条军规” 挡在面前:标准
                    的工作组需要网页开发者这一端的输入,以确保各项规范可以处理真实的开
                    发需求;但是开发者往往没有兴趣尝试那些在生产环境中还不能使用的东
                    西。当实验性的技术被广泛应用到生产时,工作组就被这些技术早期的、实
                    验性的版本捆住手脚了,因为一旦这些技术有变动,那些已经在用这些技术
                    的网站就挂了。显然,这完全否定了让开发者尝试早期标准的好处。
                        这些年来,为了解决这个难题,许多方案被提了出来,但都不够完美。
                    饱受诟病的浏览器前缀就是其中之一。这个方案是指每个浏览器都可以实现
                    这些实验性的(甚至是私有的、非标准的)特性,但要在名称前面加上自
                    己特有的前缀。最常见的前缀分别是 Firefox 的 -moz-、IE 的 -ms-、Opera
                    的 -o- 以及 Safari 和 Chrome 的 -webkit-。网页开发者可以自由地尝试这些
                    加了前缀的特性,并把试用结果反馈给工作组,而工作组随后会将这些反馈
                    吸收到规范之中,并且逐渐完善该项特性的设计。由于最终标准化的版本会
                    有一个不同的名称(没有前缀),它在实际应用中就不会跟加前缀版本相冲
                    突了。

                        听起来不错,对吧?但是你可能也猜到了,现实与我们的期望往往有
                    很大的落差。当开发者发现这些实验性的、加了前缀的属性可以轻而易举地
                    实现以前大费周章才能达到的效果时,他们就开始滥用了。这些加了浏览器
                    前缀的属性迅速成为 CSS 领域的一大潮流。网上的教程会写到它们,Stack
                    Overflow 上的问答会提到它们……很快,几乎每个有上进心的 CSS 开发者
                    都开始争先恐后地使用它们。

                        不久,网页开发者们就发现,在使用这些神奇的新特性时,如果只写出
                    当下有效的浏览器前缀,就意味着以后要经常回来打补丁:每当又一个浏览
                    器实现了这个新特性时,他们都需要多加一行。跟进各个特性在各个浏览器
                    下是不是要加前缀,光是想想就让人头皮发麻。开发者会怎样应对?那就是
                    先发制人地加上所有可能的浏览器前缀,再把无前缀的版本放在最后,以图
                    一劳永逸。我们最终写出的代码可能就是这样的:


                    ① 《第 22 条军规》是美国作家 Joseph Heller 的代表作,这部讽刺小说被誉为 20 世纪最伟大
                      的文学作品之一。书中提到的“第 22 条军规”是一条自相矛盾的、永远不可能执行的悖
                      论。——译者注



                                                                                       Web 标准 :是敌还是友           5







          ඀ࠡ  JOEC
   31   32   33   34   35   36   37   38   39   40   41