24 Star 19 Fork 0

Janking / Infinite-f2e-club

 / 详情

BEM学习笔记 —— 初学乍练

待办的
拥有者
创建于  
2017-08-13 10:28

B for Block

Block是一个组件名称,可以与其他Block互相嵌套

<!-- `header` block -->
<header class="header">
    <!-- Nested `logo` block -->
    <div class="logo"></div>

    <!-- Nested `search-form` block -->
    <form class="search-form"></form>
</header>

PS:有人会疑惑 search-form哪部分才是block,其实它整一个就视作为一个block,从而我们可以推断出block可以用连字符-来表示一个比较复杂的组件名称

E for Element

element描述了它在block中充当什么角色,它是block的一部分,不能与其分开,格式:Block-name__Element-name

elementblock之间用爽下划线__分隔,同样的Element-name也是可以用连字符-来表示一个复杂的元素名称,而且元素也可以彼此嵌套

元素总是块的一部分,而不是另一个元素。这意味着元素名称不能定义层次结构block__elem1__elem2

<!-- `search-form` block -->
<form class="search-form">
    <!-- `input` element in the `search-form` block -->
    <input class="search-form__input">

    <!-- `button` element in the `search-form` block -->
    <button class="search-form__button">Search</button>
</form>

PS: element具有可选性,并不是所有的block都需要element,例如:

<!-- `search-form` block -->
<div class="search-form">
    <!-- `input` block -->
    <input class="input">

    <!-- `button` block -->
    <button class="button">Search</button>
</div>

M for Modifier

定义blockelement的外观,状态或行为

modifier描述:

  • 其外观(“多大?”或者“哪个主题?” - sizetheme等)
  • 其状态(“它是如何从其他人有什么不同?” - disabledfocused等)
  • 其行为(“如何它是否行为?“或”它如何响应用户?“ - left,top等)
  • 修饰符名称通过单个下划线_blockelement分隔开,它不能单独使用

PS:有些人会使用双连字符--来连接modifier,不过BEM的官方解释称:双连字符被解释为注释的一部分,这会在文档验证期间导致错误
更详细的可以看
https://en.bem.info/methodology/naming-convention/#two-dashes-style

评论 (3)

Janking 创建了任务
Janking 指派了任务给Janking
Janking 添加了标签学习笔记
Janking 更新了任务

不错,就喜欢这种短小精悍的文章吼吼

以后要换成__了

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(4)
1368402 whidy 1578949926 104617 janking 1578917672
JavaScript
1
https://gitee.com/janking/Infinite-f2e.git
git@gitee.com:janking/Infinite-f2e.git
janking
Infinite-f2e
Infinite-f2e-club

搜索帮助