【发布时间】:2013-04-01 00:49:18
【问题描述】:
有人告诉我,我写下面这样的代码是错误的。我想元素不能包含块及其坏 b.e.m.
<ul class="b-nav">
<li class="b-nav__item">
<a href="#" class="b-nav__item__link"> Item </a>
</li>
</ul>
我想过这样写,但它也没有显示层次结构。
<ul class="b-nav">
<li class="b-nav__item">
<a href="#" class="b-nav__link"> Item </a>
</li>
</ul>
这是另一种方式,但对我来说它似乎比上面的例子更糟糕。
<ul class="b-nav">
<li class="b-nav__item">
<a href="#" class="b-link"> Item </a>
</li>
</ul>
我最初的编码方式是错误的吗?如果是,为什么,最好的选择是什么。
【问题讨论】:
-
前两个样本之间到底有什么区别?而且,你只是在问类名吗?
-
我看不出你所做的有什么不同或错误。
-
@EricHarms 问题在于大多数真实世界的网站都使用 BEM。通常最好利用核心 CSS 功能,例如子选择器。所以你的 HTML 实际上应该是这样的:
<ul class="nav"><li><a href="#">Item</a></li></ul>,而你的 CSS 选择器应该是UL.nav > LI、UL.nav A或UL.nav > LI > A。 -
@xec:在这里阅读了 BEM 的介绍后:coding.smashingmagazine.com/2012/04/16/… 我相信他确实在谈论他的类的命名约定。
-
你有什么问题?
<ul class="b-nav"><li class="b-nav__item"><a href="#" class="b-nav__link"> Item </a></li></ul>没关系!