我有一个css文件(main.css
),我想使用另一个css文件(overrides.css
)覆盖它。但我有问题,因为他们在不同的文件中,他们得到不同的哈希。
这是我的css:
/* main.css */
.mainContainer {
padding: 16px;
margin: 16px;
background-color: palevioletred;
border-radius: 5px;
}
.mainContainer h1{
color: white;
}
/* overrides.css */
.mainContainer h1{
color: blue;
}
从here开始,我使用Object.assign()
来合并css文件,但它没有帮助。这是我的组成部分:
import React from 'react';
import Main from './main.css';
import Overrides from './overrides.css';
const Style = Object.assign({}, Overrides, Main);
class Sample extends React.Component{
render(){
return (
<div className={Style.mainContainer}>
<h1>Hello</h1>
<p>Hello CSS modules!</p>
</div>
);
}
}
export default Sample;
我希望我的h1
变成蓝色,但不会。这是我编译的css:
/* main.css */
._1pXpG {
padding: 16px;
margin: 16px;
background-color: palevioletred;
border-radius: 5px;
}
._1pXpG h1{
color: white;
}
/* overrides.css */
.Wmy0p h1{
color: blue;
}
我希望.Wmy0p h1
为._1pXpG h1
,以便它可以覆盖。但它没有赢。请注意,如果您只是将overrides.css
的内容粘贴到主css的底部,它将会起作用,但我需要将覆盖css文件放在一个单独的文件中。
提前致谢
答案 0 :(得分:0)
通过从父div中提供一个更具体的特异性来制作来自其他文件的过度骑行样式。大多数特异性解决了覆盖其他文件的CSS。
class Sample extends React.Component{
render(){
return (
<div className={Style.mainContainerDetails}>
<div className={Style.mainContainer}>
<h1>Hello</h1>
<p>Hello CSS modules!</p>
</div>
</div>
);
}
}
/* main.css */
.mainContainer {
padding: 16px;
margin: 16px;
background-color: palevioletred;
border-radius: 5px;
}
.mainContainer h1{
color: white;
}
/* overrides.css */
.mainContainerDetails .mainContainer h1{
color: blue;
}
答案 1 :(得分:0)
您可以仅使用普通JavaScript替换网页上的特定CSS链接。 我还建议使用事件侦听器等到页面加载完毕然后进行替换。
这里是一个例子:
function overrideCommonCss() {
var webpageCurrentLink = "main.css", webpageNewLink = "overrides.css", webpageFoundLink, webpageCssTags = 0,webpageAllCssLinks = document.getElementsByTagName("LINK");
if (webpageAllCssLinks) {
for (webpageCssTags = 0;webpageCssTags < webpageAllCssLinks.length;webpageCssTags++) {
webpageFoundLink = webpageAllCssLinks[webpageCssTags].href;
if (webpageFoundLink.indexOf(webpageCurrentLink) !== -1) {
webpageAllCssLinks[webpageCssTags].href = webpageAllCssLinks[webpageCssTags].href.replace(webpageCurrentLink, webpageNewLink);
break;
}
}
}
}
if(window.attachEvent) {
window.attachEvent("onload", overrideCommonCss);
}
else {
window.addEventListener("load", overrideCommonCss, false);
}