Почему мой цвет переопределяется с помощью css-модулей?

Я пытаюсь понять, почему мой цвет переопределяется в моем CSS когда я использую css-modules, Вот мой 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 применяется к элементу. В таком случае, color является white, но он не применяется к элементу. color это определено в .tab li a переопределяет это. Я должен добавить !important в white чтобы это было color, Что я не понимаю о css или же css-modules?

1 ответ

Решение

.tabs li a более конкретно, чем .selected, Если ты хочешь .selected перезаписать значение по умолчанию, попробуйте .tabs .selected { background: url('../../images/header_nav_on.gif') top left repeat-x; color: white; },

Вы можете использовать следующую формулу для расчета специфичности: +100 для идентификатора, +10 для класса, +1 для тега.

Что делает .tabs li a стоит 12 (класс (10) + тег (1) + тег (1)) VS .selected, который только 10. Если вы сделаете это .tabs .selected вместо этого он будет стоить 20 (класс (10) + класс (10)) и поместит его выше значения по умолчанию.

Другие вопросы по тегам