Page 45 - css揭秘
P. 45

现在,我们只需要在一处修改,就可以改变所有的 background-size
                                              和 background-repeat 了。你会发现这个技巧在本书中的使用非常普遍。

                                              我应该使用预处理器吗


                                                  你很可能听说过像 Stylus(http://stylus-lang.com/)、Sass(http://sass-
                                              lang.com/)或 LESS(http://lesscss.org/)这样的 CSS 预处理器。它们为 CSS

                                              的编写提供提供了一些便利,比如变量、mixin、函数、规则嵌套、颜色处
                                              理等。

                                                  如果使用得当,它们在大型项目中可以让代码更加灵活,而 CSS 自身
                                              在这方面确实有很大局限。只要我们在代码健壮性、灵活性和 DRY 方面
                                              有追求,就会感受到 CSS 在这方面的局限。不过,预处理器也不是完美无
                                              缺的。
                                                     „ CSS 的文件体积和复杂度可能会失控。即使是简洁明了的源代码,
                                                     在经过编译之后也可能会变成一头从天而降的巨兽。
                                                     „ 调试难度会增加,因为你在开发工具中看到的 CSS 代码并不是你写
                                                     的源代码。不过这个问题已经大大好转了,因为已经有越来越多的
                                                     调试工具开始支持 SourceMap。SourceMap 是一种非常酷的新技术,
                                                     正是为了解决这个痛点而生的,它会告诉浏览器哪些编译生成的
                                                     CSS 代码对应哪些预处理器 CSS 代码,精确到行号。
                                                     „ 预处理器在开发过程中引入了一定程度的延时。尽管它们通常很快,
                                                     但仍然需要差不多一秒钟的时间来把你的源代码编译成 CSS,而你
                                                     不得不等待这段时间才能预览到代码的效果。




                     小 花 絮      怪异的简写语法

                    你可能已经注意到前面那个背景属性简写的例子了:在 background 简写属性中指定 background-size
                    时,需要同时提供一个 background-position 值(哪怕它的值就是其初始值也需要写出来),而且还要使
                    用一个斜杠(/)作为分隔。为什么有些简写的语法如此怪异?
                    这通常都是为了消除歧义。在这个例子中,top  right 显然是 background-position,而 2em  2em 是
                    background-size,不管它们的顺序如何。但是,请设想一下 50%  50% 这样的值,它到底是 background-
                    size 还是 background-position 呢?当你在使用展开式属性时,CSS 解析器明白你的意图;而当你使用
                    简写属性时,解析器需要在没有属性名提示的情况下弄清楚 50% 50% 到底指什么。这就是需要引入斜杠的
                    原因。
                    对绝大多数的简写属性来说,并没有这样的歧义问题,因而简写属性的多个值往往可以随意排列。不
                    过,我还是建议你养成随手查阅语法的好习惯,以免犯错。如果你对正则表达式以及规范的语法描述方式
                   (grammar)很熟悉的话,不妨直接在相关规范中查询语法描述。如果要确定某个属性的值是否有明确的
                    顺序要求,这可能是最快的方式。



                   14   第 1 章 引言







          ඀ࠡ  JOEC
   40   41   42   43   44   45   46   47   48   49   50