【问题标题】:Inheritence - CSS Modules in React and Webpack继承 - React 和 Webpack 中的 CSS 模块
【发布时间】:2016-04-08 21:11:07
【问题描述】:

假设我有一个名为 nav 的 React 模块,其中嵌套了多个 <li><a> 标签。使用 CSS 模块,我怎样才能拥有像这样的“可继承”或“级联”规则:

nav {
    background: red;

    > li > a {
        background: green;    
    }
}

似乎我只能将一种样式直接应用于一个元素?

【问题讨论】:

    标签: node.js reactjs sass webpack css-modules


    【解决方案1】:

    您的代码示例演示的不是inheritancethe cascade,而是选择器combinators 的使用。

    您的示例显示了支持 nesting 的 SCSS 代码,因此:

    nav {
        background: red;
        > li > a {
            background: green;
        }
    }
    

    被转译成:

    nav {
        background: red;
    }
    
    nav > li > a {
        background: green;
    }
    

    CSS 模块不会阻止您使用这些组合符——CSS 模块是 CSS 的超集,因此第二个示例可以直接使用。如果与 SCSS 一起使用,第一个示例将起作用。

    可能值得注意的是,CSS 模块背后的许多理性认为上述 CSS 很差,至少有两个原因:

    1. 定位标签
      • navlia 都是非常通用的,因此除了最小的项目之外,它极有可能与其他规则发生冲突。
    2. 高特异性
      • nav > li > a 是不必要的特定(并且与标记结构紧密耦合)。为了使 CSS 成功扩展,通常认为降低特异性是一种很好的做法,因此选择器不必竞争 (!important)。

    【讨论】:

      猜你喜欢
      • 2017-10-08
      • 2018-01-06
      • 2017-05-21
      • 1970-01-01
      • 2023-03-21
      • 2016-06-24
      • 2012-09-02
      • 2019-05-14
      • 1970-01-01
      相关资源
      最近更新 更多