# 主题规则

主题规则不经常在项目中使用,所以并不归入核心类型。一些项目可能需要主题规则,比如像雅虎邮箱这样的产品。

# 主题

不言而喻的是,主题定义了颜色和图像,这些决定了你的应用或者网站的观感。将主题提取出来,并形成一套规则集,这将使得重新定义一套主题变得十分容易。

主题可以影响任何主要类型。它可以覆盖基础样式,例如链接的默认颜色;它可以改变模块的颜色和边框;它可以使得布局有不同布法;它也可以改变状态的外观。

假设你有一个弹框模块需要蓝色的边框,在模块中边框会被初步定义,而颜色会在主题中设置。

/* 模块主题 */
// in module-name.css
.mod {
    border: 1px solid;
}

// in theme.css
.mod {
    border-color: blue;
}

主题通过类名可以清楚的表示什么样式属于主题的一部分,什么不属于,只需要有一个单独的主题文件包含样式就可以了。

在雅虎邮箱,我们有超过50个主题文件,为了保持所有主题文件的一致性,我们通过Mustache模板来帮助我们指定一些颜色值和背景图片,并为产品创建一个最终的CSS文件。

# 字体

最后有必要提下字体规则。和主题类似,有时你需要重新定义批量使用了的字体规则。比如在做国际化的时候,对中国和韩国使用表意文字的国家进行本地化时,比较小的字体是很难阅读的。所以,对于每个不同的地区,我们创建一个单独的字体文件来重新定义组件的字体大小。

和主题文件一样,我们不需要为字体定义专门的类名(比如f-large)。你的网站应该只有3到6种的字体大小,如果超过6种,你的用户可能不会注意到这上面的变化,但你的维护难度却增加了。