B.E.M
- B:块(block)、E:元素(element) 、M:修饰符(modifier) 、
它是一种用代码和一系列模式描述现实情况的方法。其目的是为了长久的课维护性
块(block)
- 一个块是一个独立的实体,就像应用的一块积木。一个块既可以是简单的,也可以是复合的(包含其他块)
我理解:作者所说的块其实就是用于分区的div和用于布局的DIV。
就像一个搜索栏:是一个块,可以被包含在head
中
元素(element)
- 一个元素是块的一部分,具有某种功能。元素时依赖上下文的:它们只有处于它们应该属于的块的上下文中才是有意义的。
比如一个Search块中,往往包含两个element:input
和button
.
我认为这应该是元素需要的特点,如果一个元素不依赖上下文,那它就应该是块。
块必须是独立的
- 所以随着一个项目的发展,我们常常会在页面中添加,删除,或者是移动一些块。例如,你可能想要互换
Logo
和Auth
块,或者把Menu
放到Search
块下面。
所以引出块的特点:块必须是独立的, 只有独立的块才能放在任何位置。突然我想到vue整合页面——其实就是把各自独立的组件放在指定的位置,再所以,其实组件也是必须是很独立的,那我写的时候也可以吧每一个块看做为一个组件,一个组件看成是一个页面。
块的命名
和我想的不一样,一个独立的块,命名不需要model或者其他的,他是一个块、是什么块,在备注中需要写上,至于命名。以他是什么内容命名就可以了,比如:
<ul class="menu">
<li class="menu__item"></li>
<li class="menu__item"></li>
</ul>
依次嵌套,如果把块理解好了,嵌套不会太深;
块修饰符(modifier)
我们经常需要在同一个页面中,创建一个和已存在的块非常相似的块,只是外观或行为有些许改变。
- 比如说我们有一个这样的任务:
给Footer添加另外一个布局不一样的Menu。
为了避免开发一个和现有的块只稍微有点不同的另一个块,所以引入修饰符(modifier)的概念。 - 我们在长名称中使用连字符分隔单词(如,
block-name
),使用两个下划线来分隔块名和元素名(block-name__element-name
),
那么修饰符就应该是用两个连字符来分割块与状态?(
block-name--modifier-name
)?但是在W3C给出的确是一下这样的:
<ul class="menu">
<li class="menu__item">Index</li>
<li class="menu__item menu__item_state_current">Products</li>
<li class="menu__item">Contact</li>
</ul>
我觉得可能都可以,只是需要定义一种符号区分 ~我看很多文章都是用--
表示块的状态。__
表示块与元素
明天的练习:
这个网站命名分区是用B.E.M的你觉得可以么
https://news.yandex.ru/
![](https://img.haomeiwen.com/i6420301/7061582b0484b43e.png)
![](https://img.haomeiwen.com/i6420301/3c5e2e577b152776.png)
![](https://img.haomeiwen.com/i6420301/41c7eecf5db4fdaf.png)
我明天再找找,今天搬家有搬了一天- -。。。
网友评论