组织 CSS 样式的方法挺多的,这些方法可以让你更好的去创建与管理 CSS 样式。这些方法都有自己的名字,BEM 就是一种组织 CSS 样式的方法。B(Block)E(Element)M(Modifier),区块__元素--修饰符。
比如你想为下面这块代码添加 CSS 样式:
<ul> <li>item 1</li> <li>item 2</li> </ul>
CSS 样式看起来可能像这样:
ul { list-style: none; } ul li { margin-bottom: 16px; }
在上面的样式里,我用了后代选择器(Descendant selectors),ul li
表示的是,找到所有的 li
标签,这个标签在 ul
标签里面。
如果用 BEM 的方式去创建这块样式,应该像这样:
.list { list-style: none; } .list__item { margin-bottom: 16px; }
HTML 现在会变成这样:
<ul class="list"> <li class="list__item">item 1</li> <li class="list__item">item 2</li> </ul>
这块无序列表可以看成是一个区块(Block),我们可以给这个区块起个名字(list
),区块里面的每个元素(Element)也会有个名字,区块名与元素名之间用两个下划线分开(list__item
,list
是区块名,item
是区块里的元素名)。
M(Modifier)修饰符。比如有一种带边框的 list,这样就可以用一个修饰符:
.list--bordered { border: 1px solid #ccc; }
然后这样用:
<ul class="list list--bordered"> <li class="list__item">item 1</li> <li class="list__item">item 2</li> </ul>
修饰符的前面用两条横线(--)分隔开。一个水平显示的列表,在列表元素的后面加个 inline(名字可以随便定义) 修饰符,像这样:
.list__item--inline { display: inline-block; }
HTML:
<ul class="list list--bordered"> <li class="list__item list__item--inline">item 1</li> <li class="list__item list__item--inline">item 2</li> </ul>
上面是从 codecourse 学来的。
评论
浩哥,可以把你的代码仓库分享出来么?把平时的练习或者做的项目供我们参考参考
7 年 7 个月 以前
现在有点乱,有的时候我会在视频里提一下,这个课程用了哪个仓库。
7 年 7 个月 以前
有时候不知道class名怎么取,上面这个就非常好,还有整个网站的各个区块名吗?我英文不好
7 年 7 个月 以前