为什么我的颜色被 css-modules 覆盖了?

Why is my color being overridden using css-modules?

我想了解为什么在我使用 css-modules 时我的 CSS 中的颜色被覆盖了。这是我的 jsx:

let tabLink = className({
    [s.selected]: selectTab
});

<li className={s.tabs}>
    <a className={tabLink}>{tab.translation}</a>
</li>

这里是 CSS:

.tabs {
    color: #454545;
}
.tabs li {
    display: inline-block;
    font-size: 11px;
}
.tabs li a {
    color: #454545;
    cursor: pointer;
    text-decoration: none;
}
.selected {
    background: url('../../images/header_nav_on.gif') top left repeat-x;
    color: white;
}

因此,当 selectTab 为真时,s.selected 将应用于该元素。在那种情况下,colorwhite,但它不应用于元素。 .tab li a 中定义的 color 覆盖了它。我必须将 !important 添加到 white 以使其成为 color。我对 csscss-modules 有什么不理解的?

.tabs li a.selected 更具体。如果你想 .selected 覆盖默认值,试试 .tabs .selected { background: url('../../images/header_nav_on.gif') top left repeat-x; color: white; }.

可以使用以下公式计算特异性:id+100,class+10,tag+1。

这使得 .tabs li a 值 12 (class(10) + tag(1) + tag(1)) VS .selected,它只有 10。如果你做到了.tabs .selected 相反,它将值 20 (class(10) + class(10)) 并将其置于默认值之上。