处理样式表顺序和 css 模块类名覆盖
Dealing with stylesheet order and css module className overrides
我有一个组件有自己的风格,例如
.prompt { color: red; }
声明如下:
import cn from 'classnames';
import styles from './styles.css';
const MyComponent = ({className}) => {
return (
<div className={cn(styles.prompt, className)}>
test
</div>
);
}
在我的特定用例中,传入的 className 的样式表实际上是在模块样式表之前定义并添加到头部的,因此模块的 css 总是覆盖传入的 className 的样式。类似于:
请注意来自第二个 class 的 background: yellow
被模块自身 class 的背景覆盖。
除了在辅助 class 中使用 !important 之外,我该如何解决这个问题?
根据李斯特先生的回复,我重新评估了我现有的特异性知识,并在更高层次上提出了以下解决方案css:
// in app.scss
.offline.prompt {
color: red;
}
// in app.tsx
const classes = cn(Styles.offline, Styles.prompt);
return <OfflineApp className={classes}>...</OfflineApp>;
本质上,我只是用另一个兄弟 class 标记模块标记以增加特异性并使用它来定位必要的属性。比滥用 !important.
好多了
我有一个组件有自己的风格,例如
.prompt { color: red; }
声明如下:
import cn from 'classnames';
import styles from './styles.css';
const MyComponent = ({className}) => {
return (
<div className={cn(styles.prompt, className)}>
test
</div>
);
}
在我的特定用例中,传入的 className 的样式表实际上是在模块样式表之前定义并添加到头部的,因此模块的 css 总是覆盖传入的 className 的样式。类似于:
请注意来自第二个 class 的 background: yellow
被模块自身 class 的背景覆盖。
除了在辅助 class 中使用 !important 之外,我该如何解决这个问题?
根据李斯特先生的回复,我重新评估了我现有的特异性知识,并在更高层次上提出了以下解决方案css:
// in app.scss
.offline.prompt {
color: red;
}
// in app.tsx
const classes = cn(Styles.offline, Styles.prompt);
return <OfflineApp className={classes}>...</OfflineApp>;
本质上,我只是用另一个兄弟 class 标记模块标记以增加特异性并使用它来定位必要的属性。比滥用 !important.
好多了