您的目标是不同的元素,即。
.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
类添加到您的“元素”中,在您的情况下,这将是一个列表项,如下所示:
<div class="nav-primary">
<ul>
<li class="nav-primary__menuitem"><a href="">why am I not a different colour?</a></li>
</ul>
</div>
只有这样,您的最后一条规则才会适用于您的链接。
但是要对代码进行 BEM 化,您需要确定什么是块,以及 html 结构中该块的元素是什么。因此,在您的代码中,您可能还希望向链接元素添加一个类。如果您希望您的块成为一个nav-primary
元素,请.nav-primary__menulink
在链接上也使用 ie 类:
那么你的 CSS/SASS/LESS 将看起来:
.nav-primary {
&__menu {
color:red;
}
&__menuitem {
color:green;
}
&__menulink {
color:yellow;
}
}