以下文档描述了应用在 Mozilla UI设计 中优化 CSS 文件的规则。第一部分是对于 Mozilla 样式系统分类规则的一般性讨论。在了解这个系统的基础上,后续部分包含了一些指南,书写可以利用这个样式系统实践优点的样式的指南。
样式系统如何分类规则
样式系统把规则分为四大类。理解这些类是很重要的,因为对于规则的匹配来说他们是首先要考虑的。之后的段落中会使用“主选择符”这个说法。主选择符是指选择符最右边的部分(最终要匹配的那个元素,而不是它的祖先元素)。
主选择符是 “img”, “p”, 和 “[title]“。
ID 规则
ID 选择符作为主选择符的规则。
Class 规则
如果一条规则有一个指定的 class 作为主选择符,就被归入此类。
Tag 规则
如果主选择符不是 ID 或者 class,那么下一个类很可能就是 tag 分类。如果一条规则指定 tag 为主选择符,就被归入此类。
全局规则
除以上分类之外都归入此类。
样式系统如何匹配规则
样式系统从最右边的选择符开始向左侧移动来匹配一条规则。样式系统会一直向左匹配选择符直到规则匹配完毕或者由于出错停止匹配。
对于规则分类的第一步发生在主选择符类别基础上。这个分类的目的是把那些不需要浪费时间匹配的规则过滤出来。这是显著提升性能的重点。对于一个给定的需要匹配的元素,规则越少,样式的渲染越快。例如,元素有一个 ID,那么只有和元素 ID 匹配的 ID 规则会被检索。只有和元素的 class 匹配的 class 规则会被检索。只有和 tag 匹配的 tag 规则会被检索。全局规则总是会被检索。
高效 CSS 指南
避免全局规则
确保规则不以全局分类结束
不要给 ID 分类规则指定标签名或者 class
如果有一条样式规则是以 ID 选择符为主选择符的,就别再画蛇添足的加上标签名了。ID 都是唯一的,因此加上标签名反而会无谓地拖慢匹配过程。(当有不同元素使用同一类名,而又需要动态地改变其中一个元素的类名来针对不同情况应用不同样式时是个例外。)
不要给 class 分类规则指定标签名
和以上规则类似,所有的类名也是唯一的。标签和类名连缀的写法是一个惯例(但是,如果设计的变更使得需要改变标签就会有灵活性的问题,因为也需要改变 class — 最好选用具有严格语义的名字,这种灵活性也是分离样式表的目标之一)。
尽量把规则应用到最明确的类上
拖慢系统最大的一个原因是有太多的 tag 分类规则了。通过给元素增加类名,可以把这些 tag 类里的规则分一部分去class 分类,就可以不需要浪费时间来试图给一个标签匹配那么多的的规则了。
避免后代选择符
CSS 中,后代选择符(descendant)[注1]的耗能高的可怕,尤其是选择符的规则是在 tag 或者全局分类中。子选择符(child selector)则经常是真正所需。如果没有主题模块所有者的明确允许,UI CSS 中禁止使用后代选择符。
Tag 类规则中最好不要包含后代选择符
避免使用具有 tag 类规则的后代选择符。这会明显地增加匹配时间(尤其是这些规则会被多次匹配时)。
小心子选择符的使用
要小心使用子代选择符。如果有别的方式可以不用,就不要用子选择符。尤其是子选择符被大量使用在 RDF 树和类似的菜单中时。
要注意模版中来自 RDF 的属性是可以复制的!可以利用这一点把 RDF 属性复制到需要改变那个属性的子元素上。
倚赖继承
了解并使用那些可以继承的属性。XUL widgetry[注2] 已经明确设置了,因此可以把 list-style-image 或者 font 规则应用到父级标签上,它将渗透进匿名内容。因此就不需要浪费时间为那些匿名内容写规则了。
,样式化匿名内容的需求(没有理解 list-style-image 可以继承)导致了一条 class 类规则。其实这条规则应该属于最明确的一类 — ID 类规则。
要记住,尤其是那些匿名内容,它们都有同样的 class。上面那个不好的例子导致需要检查每个菜单的图标是否包含在 bookmarks 菜单项中。这是非常可怕的高昂消耗(有很多菜单);除 bookmarks 菜单之外,这条规则不应该被其他任何菜单想检查。
使用 -moz-image-region
把一堆图片放到一个单独的图片文件中,并用 -moz-image-region[注3] 选中会有显著的性能提升。
作品展示
UI设计热门话题
UI设计最新教程
- LUA教程游戏UI制作
- 游戏UI设计
- 用Java编写完整的GUI程序源代码
- 报表的UI设计
- 如何成为UI设计师
- UI框架的Composite模式
- 直接操纵的UI设计
- 软件人机界面设计准则
- UI设计的页面修改原则
- UI图标制作视觉分析
- 内容和功能决定表现形式和界面设计
- UI设计师在产品项目中需要做什么?
- 用户交互界面设计技术
- 界面设计之图标设计规范
- 手机界面设计理念
- 三大操作系统的UI设计
- Balsamiq_Mockups UI设计制作软件
- 商业网页设计的专业用户界面设计
- 网站用户体验必须注意的76个要点
- UI用户界面设计在工作流程上分三部分。
- UI制作的可用性与优势
- UI技术总结与图形界面技术思考
- 界面设计之交互设计 Interactive Design
- UI设计师盛佳林访谈
- UI界面设计的具体步骤与后期修改
- 符合理想界面的UI界面设计
- 网页设计的品牌元素及阅读模式
- UI屏幕设计基础设计理论
- 在UI设计中书写CSS文件
- UI设计教程:界面图标创意设计
- UI界面设计的最理想化概念
- 界面设计师要设计用户习惯的界面设计
- 软件界面设计的界面评测
- UI设计的成功之处
- UI设计的术语描述
- 重在设计理念的UI设计转变
- UI设计好书整理
- 成功UI设计的制作流程
- 掌握三点商务Web的用户界面设计
- 让UI设计灵动起来的催化剂
- “一致”与“友好”的UI界面设计
- GUI程序不等同于GUI设计人员
- 干扰搜索结果是GUI设计的弊病
- 游戏界面设计要点
- 会在GUI中引起误会的文字独立意义
- 用户对界面设计中的术语理解很重要
- 深层的交互设计禁忌
- GUI设计中使用选项卡作为单选按钮是禁忌
- 通过用户测试发现软件GUI设计的错误
- 软件界面设计要注意保持显示的惯性
- GUI界面设计中的特殊手段
- 干扰用户的搜索结果是界面设计的大忌
- 用户界面不是次要工作
- UI软件设计应该满足响应速度的需求
- 从用户界面开始的设计
- 为什么要避免UI界面设计时的某些错误
- 手机的GUI该怎么设计
- 用游戏界面来吸引游戏er
- 有信息分层传达的界面设计
- 设计界面的意义所在
- 在网页设计中如何提高用户的可读性
- 界面设计与界面开发的不同点
- 网页设计制作的注意要点
- PSP简单计算器的新界面设计
- PS图层样式制作Vista风格按钮
- 把导航系统做薄
- 让复杂导航设计变简单
- 如何设计用户体验?
- 从系统和心理模型的匹配原则谈UI设计
- 写实门环图标制作教程
- 界面图标创意设计教程
- 韩国CG高手的作画过程一
- 韩国CG高手的作画过程二
- Illustrator绘制精致iTunes矢量图标
- 简单的方法制作酷眩背景
- 简单的手机软件制作图片
最新动态
联系我们
- Tel:086-021-55058830
- Mobile:086-18964109839
- MSN:citywalker2005@hotmail.com
- QQ:121746618
- Email:citywalker2005@hotmail.com