BEM
BEM
命名约定的模式如下:
.block {
}
.block__element {
}
.block--modifier {
}
.block 代表了更高级别的抽象或组件。. block__element
代表 .block 的后代,用于形成一个完整的.block 的整体。- .block–
modifier 代表.block 的不同状态或不同版本。
之所以使用两个连字符和下划线而不是一个,是为了让你自己的块可以用单个连字符来界定,如:
.site-search {
} /* 块 */
.site-search__field {
} /* 元素 */
.site-search--full {
} /* 修饰符 */
.person {
}
.person__hand {
}
.person--female {
}
.person--female__hand {
}
.person__hand--left {
}
顶级块是‘person’,它拥有一些元素,如‘hand’。一个人也会有其他形态,比如女性,这种形态进而也会拥有它自己的元素。下面我们把他们写成‘常规’CSS:
.person {
}
.hand {
}
.female {
}
.female-hand {
}
.left-hand {
}
这些‘常规’
<form class="site-search full">
<input type="text" class="field" />
<input type="Submit" value="Search" class="button" />
</form>
这些
<form class="site-search site-search--full">
<input type="text" class="site-search__field" />
<input type="Submit" value="Search" class="site-search__button" />
</form>
我们能清晰地看到有个叫.site-search__field
的元素。并且