在使用 BEM(块、元素、修饰符)命名约定时,是否必须将 class 名称应用于 HTML 中的每个元素?

Is that compulsory to apply class name to each and every element in HTML while using BEM (Block,Element, Modifiers) naming convention?

我正在尝试将 BEM 命名约定付诸实践,但对 HTML 元素的命名有些困惑。我真的很想知道我是否真的需要为每个 HTML 元素提供 class 名称。

假设我有以下代码,例如:

<ul class="nav">
    <li class="nav__list"><a href="#" class="nav__link>Home</a></li>
    <li class="nav__list"><a href="#" class="nav__link>Services</a></li>
</ul>

我不想将 CSS 应用于 <li> 元素。 那么,在那种情况下,我是否需要为 <li> 标记使用元素名称。即 <li class="nav__list">...</li>

我可以只使用锚标记的元素名称而不为 <li> 元素提供元素名称 nav__list 吗?

这是我想做的,因为我不想将样式应用于 CSS 到 <li>

<ul class="nav">
    <li><a href="#" class="nav__link>Home</a></li>
    <li><a href="#" class="nav__link>Services</a></li>
</ul>

首先,您应该必须遵循 BEM 大多数开发人员遵循 BEM 只是因为 BEM 擅长命名约定并且它显示了编码的标准命名约定。这取决于你是否想使用 BEM,你可以使用,否则这是你的愿望,但我建议你遵循 BEM,它的标准很好。

你可以用这个

<ul class="nav">
  <li class="nav__list"><a href="#" class="nav__link>Home"></a></li>
  <li class="nav__list"><a href="#" class="nav__link>Services"></a></li>
</ul>

还有这个

<ul class="nav">
  <li><a href="#" class="nav__link>Home"></a></li>
  <li><a href="#" class="nav__link>Services"></a></li>
</ul>

现在你不想给 li 风格,但将来客户说你给 li 风格,那时候你会再做一次你会改变代码所以你必须在下面使用这个 HTML代码

<ul class="nav">
  <li class="nav__list"><a href="#" class="nav__link>Home"></a></li>
  <li class="nav__list"><a href="#" class="nav__link>Services"></a></li>
</ul>