修改器的简单Sass BEM继承
我知道这似乎是一个基本的问题,但尽管有很多关于sass和bem的伟大著作,我还是不知道这种继承是如何与嵌套一起工作的。也许这里有人可以澄清一下 例如,具有链接和活动链接的简单导航:修改器的简单Sass BEM继承,sass,bem,Sass,Bem,我知道这似乎是一个基本的问题,但尽管有很多关于sass和bem的伟大著作,我还是不知道这种继承是如何与嵌套一起工作的。也许这里有人可以澄清一下 例如,具有链接和活动链接的简单导航: .Header { padding: 1rem; &__nav { display: flex; align-items: center; &-link { @include fonts.bold;
.Header {
padding: 1rem;
&__nav {
display: flex;
align-items: center;
&-link {
@include fonts.bold;
font-size: 1.15rem;
&--active {
color: red;
}
}
}
}
然后这个组件:
const NavLink = props => (
<Link
{...props}
getProps={({ isCurrent }) => ({
className: isCurrent ? "Header__nav-link--active" : "Header__nav-link",
})}
/>
);
const Header = () => {
return (
<header className="Header">
<div className="Header__nav">
<NavLink to="/app/A">PAGE A</NavLink>
<NavLink to="/app/B">PAGE B</NavLink>
<NavLink to="/app/C">PAGE C</NavLink>
</div>
</header>
);
};
const-NavLink=props=>(
({
类名:isCurrent?“Header\uu nav-link——活动”:“Header\uu nav-link”,
})}
/>
);
常量头=()=>{
返回(
A页
B页
C页
);
};
问题
未激活的链接-Header\uuu nav-link
会获得字体设置,但--active
链接不会。通过将基类与活动的一起添加到标记中,这样做是否“正确”
如下所示:className=“Header\uuu nav-link Header\uu nav-link--active”
是的,正确的方法就是您所描述的。边界元法中的修饰符旨在与块类一起使用,以便以某种方式从基类对其进行修改。仔细想想,修饰符类本身是不可能的,因为它没有定义的要修改的块。这是有道理的。我只是认为继承可以“吸收”所有下游属性,但事后看来,这没有多大意义。非常感谢。