BEM是否会强迫您创建不必要的元素?

时间:2018-07-24 00:06:46

标签: html css bem

<header>
  <a href="#"><img src="kitty.jpg" /></a>
  ...
</header>

例如,我把它放在标题中,它不依赖于header块。为了使其对BEM友好,我倾向于这样做:

<header>
  <div class="logo">
    <a href="#" class="logo__link"><img src="kitty.jpg" class="logo__img" /></a>
  </div>
  ...
</header>

这是接近BEM的正确方法吗?

1 个答案:

答案 0 :(得分:3)

通过“它不依赖于header块”,我认为您的意思是在其他地方重用了这种徽标式结构。因此,根据定义,它是一个块,因为它有"no dependency on other blocks/elements on a page"

因此,如果我对您的问题的解释是正确的,则您应该可以为锚标签指定logo类,并为logo__img中的图像;包装器div.logo是不必要的。

要回答标题问题,不,BEM不应以任何方式强制使用太多HTML。它主要是一种CSS方法,您可以在任何接受类名称的DOM节点上定义块和元素。