【问题标题】:Simple Sass BEM inheritance for modifiers修改器的简单 Sass BEM 继承
【发布时间】:2023-03-24 05:36:01
【问题描述】:

我知道这似乎是一个基本问题,但是尽管有很多关于 sass 和 bem 的伟大著作,但我还是错过了这种继承如何与嵌套一起工作。也许这里有人可以澄清一下。

例如,带有链接和活动链接的简单导航:

.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>
    );
};

问题

未激活的链接 - Header__nav-link 获取字体设置,但 --active 链接没有。将基类与active 一起添加到标记中是“正确”的方法吗?

像这样:className="Header__nav-link Header__nav-link--active"

【问题讨论】:

    标签: sass bem


    【解决方案1】:

    是的,正确的方法就是你描述的。 BEM 中的修饰符旨在与块类一起使用,以某种方式从基础更改它。如果您考虑一下,修饰符类不能单独存在,因为它没有定义要修改的块。

    【讨论】:

    • 这是有道理的。只是认为继承可以“吸收”所有下游属性,但事后看来,这没有多大意义。谢谢!
    猜你喜欢
    • 2014-12-05
    • 2018-11-06
    • 1970-01-01
    • 2014-07-03
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 2020-01-02
    相关资源
    最近更新 更多