【问题标题】:Correct approach for a navbar structure with BEM使用 BEM 的导航栏结构的正确方法
【发布时间】:2017-09-09 17:54:33
【问题描述】:

我正在尝试围绕 CSS 中的 BEM 命名,想知道我是否理解正确。

根据官方文档,一个元素是:

块的一部分,没有独立的意义,在语义上 绑在它的块上。

鉴于下面的代码 sn-p,.main-nav 的子项都没有任何独立意义,所以我相信它们都可以作为一个元素。

但是,当我最终得到像 .main-nav__sub-menu-item-link 这样的类名时,我不禁觉得有一些代码味道。感觉就像我仍然在我的元素名称空间内嵌套了好几层。

也许这完全没问题,下面的例子是正确的实现,我只是感谢第二个意见。

<nav class="main-nav">
  <div class="main-nav__logo">
    <a class="main-nav__logo-link">Company Name</a>
  </div>
  <ul class="main-nav__menu">
    <li class="main-nav__menu-item">
      <a class="main-nav__menu-item-link">Products</a>
      <ul class="main-nav__sub-menu">
        <li class="main-nav__sub-menu-item">
          <a class="main-nav__sub-menu-item-link">Foo</a>
        </li>
        <li class="main-nav__sub-menu-item">
          <a class="main-nav__sub-menu-item-link">Bar</a>
        </li>
        <li class="main-nav__sub-menu-item">
          <a class="main-nav__sub-menu-item-link">Baz</a>
        </li>
      </ul>
    </li>
    <li class="main-nav__menu-item">
      <a class="main-nav__menu-item-link">Services</a>
    </li>
    <li class="main-nav__menu-item">
      <a class="main-nav__menu-item-link">About Us</a>
    </li>
  </ul>
</nav>

【问题讨论】:

  • 我就是这样做的。

标签: html css bem


【解决方案1】:

确实不错。

CSS 中缺少范围的问题已在您的标记中解决。选择器特异性不会增加。所以就保持原样吧。

不要害怕长类名,在 gzip 之后它和短变体一样。

【讨论】:

  • 谢谢,只是需要一些再保证!
猜你喜欢
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
  • 2022-10-27
  • 1970-01-01
  • 1970-01-01
  • 2014-03-24
  • 2012-07-04
  • 2018-12-22
相关资源
最近更新 更多