首页 > 解决方案 > 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 的正确方法吗?

标签: htmlcssbem

解决方案


通过“它不依赖于header块”,我假设您的意思是您在其他地方重用了这种标志式结构。根据定义,它是一个块,因为它“不依赖于页面上的其他块/元素”

因此,如果我对您的问题的解释是正确的,您应该能够给您的锚标签一个类别logo和其中的图像logo__img;包装div.logo是不必要的。

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


推荐阅读