转载请注明出处: http://qiudeqing.com/css3/2015/10/23/css-the-good-parts.html

原文

Namespaces

组件必须设置唯一的命名空间做为前缀

比如一个drop down list组件使用ddl作为命名空间:

Good

.ddl-container {}

.ddl-item-list {}

.ddl-item {}

Bad

.item-list {}

.dropdown-item-list {}

.xyz-item-list {}

通用的类提供可复用样式应该放在单独命名空间如uv

Good

.uv-clearfix {}

Bad

.clearfix {}

Classes

类名应该遵循以下规则

Good

.ddl-item {}

.ddl-selected {}

.ddl-item-selected {}

Bad

.ddlItem {}


.ddl-item-container-text {}

.ddl-foo-bar-baz {}

Attributes

属性选择器经常带来好处, 基础规则:

Good

[href] {}

Bad

a[href] {}

[href^='http'] {}

id 选择器

禁止使用id选择器

Good

.ur-name {}

Bad

#ur-name {}

Tag Names

标签选择器使用应遵循以下规则

Good

button {
  padding: 5px;
  margin-right: 3px;
}

.ddl-button {
  background-color: #f00;
}

Bad

.ddl-container button {
  background-color: #f00;
}

selectors and nesting

选择器嵌套不应该超过三级

Good

.sg-title-icon:before {}

.dg-container .sg-title {}

Bad

.dg-container .sg-container .sg-title {}

.dg-container .sg-title span:before {}

如果一个组件需要与另外一个地方的同种组件不一样

假设你有一个用户列表组件.ul-*和一个用户卡片组件.uc-*

Good

<div class="ul-container">
  <div class="uc-container">
    <span class="uc-name ul-card-name">John Doe</span>
  </div>
</div>
.ul-card-name {}

Okay

<div class="ul-container">
  <div class="uc-container">
    <span class="uc-name">John Doe</span>
  </div>
</div>
.ul-container .uc-name {}

Bad

<div class="ul-container">
  <div class="uc-container">
    <span class="uc-name uc-name-in-ul">John Doe</span>
  </div>
</div>
.uc-name-in-ul {}

Organization

完美状态下应该将所有样式保存在单独文件中

注意规则:

Presentation-Specific vs Layout-Specific Styles

展现相关样式是指只影响元素视觉效果的样式, 不改变元素尺寸和位置 in a meaningful way. 如:

布局相关样式修改元素尺寸和位置