我今天第一次尝试BEM。
为什么我的链接颜色与默认颜色没有区别?
它真的应该是黄色的,对吧?
.nav-primary {
&__menu {
color:red;
}
&__menuitem {
color:green;
}
&__menuitem a {
color:yellow;
}
}

<div class="nav-primary">
<ul>
<li><a href="">why am I not a different colour?</a></li>
</ul>
</div>
&#13;
答案 0 :(得分:3)
您定位不同的元素,即。
.nav-primary {
&__menu {
color:red;
}
&__menuitem {
color:green;
}
&__menuitem a {
color:yellow;
}
}
将编译为:
.nav-primary__menu { color: red; }
.nav-primary__menuitem { color: green; }
.nav-primary__menuitem a { color:yellow; }
,它与您的HTML中的任何元素都不对应。
我猜您需要将nav-primary__menuitem
类添加到&#34;元素&#34;,在您的情况下,这将是一个列表项,如下所示:
<div class="nav-primary">
<ul>
<li class="nav-primary__menuitem"><a href="">why am I not a different colour?</a></li>
</ul>
</div>
只有这样,您的上一条规则才会适用于您的链接。
但是对于BEM-ify你的代码,你需要决定什么是Block,以及你的html结构中这个块的元素是什么。因此,在您的代码中,您可能还想在链接元素中添加一个类。假设您希望您的块为nav-primary
元素,请在链接上使用ie .nav-primary__menulink
类:
然后你的CSS / SASS / LESS会看起来:
.nav-primary {
&__menu {
color:red;
}
&__menuitem {
color:green;
}
&__menulink {
color:yellow;
}
}
答案 1 :(得分:0)
根据BEM文件,我将执行以下操作:
.nav-primary {
&__menu {
color:red;
}
&__menuitem {
color:green;
}
&__menuitem a {
color:yellow;
}
}
然后将你的html改为:
<div class="nav-primary">
<ul>
<li class="nav-primary__menuitem"><a href="">why am I not a different colour?</a></li>
</ul>
</div>
答案 2 :(得分:0)
您可以在这里考虑更多模块化,因此您拥有一个高度可重用的包装器nav-primary
和一个模块list
。并且您不应该使用标记名定位a
,因为它会极大地降低您的css速度。
<div class="nav-primary">
<ul class="list list--plain list--nav-primary">
<li class="list__item [list__item--nav-item or nav-primary__item]">
<a class="[list__item-link or nav-primary__item-link]" href="">why am I not a different colour?</a>
</li>
</ul>
</div>
然后修改列表项应该通过像list__item--nav-important
这样的修改器来完成,例如红色。