程序员人生 网站导航

在 Mozilla UI 中书写高效率 CSS

栏目:htmlcss时间:2014-04-19 06:16:22

原文:Writing Efficient CSS for use in the Mozilla UI
译文:在 Mozilla UI 中书写高效率 CSS

以下文档描述了应用在 Mozilla UI 中优化 CSS 文件的规则。第一部分是对于 Mozilla 样式系统分类规则的一般性讨论。在了解这个系统的基础上,后续部分包含了一些指南,书写可以利用这个样式系统实践优点的样式的指南。

样式系统如何分类规则

样式系统把规则分为四大类。理解这些类是很重要的,因为对于规则的匹配来说他们是首先要考虑的。之后的段落中会使用“主选择符”这个说法。主选择符是指选择符最右边的部分(最终要匹配的那个元素,而不是它的祖先元素)。例如,在以下规则中:

a img, div > p, h1 + [title] {}

主选择符是 “img”, “p”, 和 “[title]“。

ID 规则

ID 选择符作为主选择符的规则。

例如:

  • button#backButton { } /* ID 类别的规则 */
  • #urlBar[type="autocomplete"] { } /* ID 类别的规则 */
  • treeitem > treerow > treecell#myCell:active { } /* ID 类别的规则 */

Class 规则

如果一条规则有一个指定的 class 作为主选择符,就被归入此类。

例如:

  • button.toolbarButton { } /* 基于 class 的规则 */
  • .fancyText { } /* 基于 class 的规则 */
  • menuitem > .menu-left[checked="true"] { } /* 基于 class 的规则 */

Tag 规则

如果主选择符不是 ID 或者 class,那么下一个类很可能就是 tag 分类。如果一条规则指定 tag 为主选择符,就被归入此类。

例如:

  • td { } /* 基于 tag 的规则 */
  • treeitem > treerow { } /* 基于 tag 的规则 */
  • input[type="checkbox"] { } /* 基于 tag 的规则 */

全局规则

除以上分类之外都归入此类。

例如:

  • [hidden="true"] { } /* 全局规则 */
  • *{} /* 全局规则 */
  • tree > [collapsed="true"] { } /* 全局规则 */

样式系统如何匹配规则

样式系统从最右边的选择符开始向左侧移动来匹配一条规则。样式系统会一直向左匹配选择符直到规则匹配完毕或者由于出错停止匹配。

对于规则分类的第一步发生在主选择符类别基础上。这个分类的目的是把那些不需要浪费时间匹配的规则过滤出来。这是显著提升性能的重点。对于一个给定的需要匹配的元素,规则越少,样式的渲染越快。例如,元素有一个 ID,那么只有和元素 ID 匹配的 ID 规则会被检索。只有和元素的 class 匹配的 class 规则会被检索。只有和 tag 匹配的 tag 规则会被检索。全局规则总是会被检索。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐