修饰器

和状态一样,修饰器也会覆盖样式。当组件(模块)有小的不同的或容易理解的差异时,它们很有用。

以电子商务网站为例,每个类别在标题中都有一个独特的背景图像。 所有的头部有一样的 padding, margin 等。 唯一不同是背景图片。

男士分类下会有一个修饰器:

<div class="categoryHeader categoryHeader--boys">

类似的,女士分类下会有一个girls 修饰器:

<div class="categoryHeader categoryHeader--girls">

CSS如下:

.categoryHeader {
  padding-top: 50px;
  padding-bottom: 50px;
  /* etc */
}

.categoryHeader--boys {
  background-image: url(/path/to/boys.jpg);
}

.categoryHeader--girls {
  background-image: url(/path/to/girls.jpg);
}

差异很小而且很容易理解,这类的复用是更容易维护的。

我们可以给按钮使用相同的方法。大多数的网站有个主要按钮和次要按钮的样式。如果所有这些改变只是一或两种样式,我们可以对主按钮和辅助按钮做一个修饰器:

.button {
  padding: 20px;
  border-radius: 3px;
  /* etc */
}

.button--primary {
  background-color: green;
}

.button--secondary {
  background-color: #eee;
}

同样的,这只在区别小并且容易理解的情况下好用。

结语

对跨容易理解元素的样式复用,修饰器是一个好的方法。但是,修饰器本身应该被调整。如果它包含了太多覆盖,那么这不是它本来的用途。这时候你应该使用模块.

章节

  1. 介绍
  2. 语义化
  3. 复用
  4. ID
  5. 约定
  6. 模块
  7. 状态
  8. 修饰器
  9. 版本
  10. Javascript
  11. 组织
  12. 问与答