如何防止外部 CSS 添加和覆盖 ReactJS 组件样式
How to prevent outside CSS from adding and overriding ReactJS component styles
我有一个自定义的 ReactJS 组件,我想以某种方式设置样式并作为插件提供给许多不同的网站。但是,当网站使用全局样式(Twitter bootstrap 或其他 css 框架)时,它会添加并覆盖我的组件的样式。例如:
global.css:
label {
color: red;
font-weight: bold;
}
component.js:
class HelloMessage extends React.Component {
render() {
let style = {
color: "green"
};
return (<label style={style}>Hello</label>);
}
}
结果:
上面我没有在我的组件样式中使用 "font-weight: bold" 但结果我的组件正在使用它。
我希望能够封装我的自定义组件的样式,使它们在所有网站上看起来都一样。
我认为最好的方法是为您的组件定义某种重置 class 并放入一组 css 重置,您可以在那里找到
(例如 http://meyerweb.com/eric/tools/css/reset/)
sass
文件中的定义可能如下所示:
.your-component-reset {
div, span, object, iframe {
margin: 0;
padding: 0;
border: 0;
font-weight: normal;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
// add some more reset styles
}
为了避免在不想使用 sass
时写太多,只需使用通用选择器 *
:
.your-component-reset * {
margin: 0;
padding: 0;
font-weight: normal;
// other reset styles ...
}
我有一个自定义的 ReactJS 组件,我想以某种方式设置样式并作为插件提供给许多不同的网站。但是,当网站使用全局样式(Twitter bootstrap 或其他 css 框架)时,它会添加并覆盖我的组件的样式。例如:
global.css:
label {
color: red;
font-weight: bold;
}
component.js:
class HelloMessage extends React.Component {
render() {
let style = {
color: "green"
};
return (<label style={style}>Hello</label>);
}
}
结果:
上面我没有在我的组件样式中使用 "font-weight: bold" 但结果我的组件正在使用它。
我希望能够封装我的自定义组件的样式,使它们在所有网站上看起来都一样。
我认为最好的方法是为您的组件定义某种重置 class 并放入一组 css 重置,您可以在那里找到 (例如 http://meyerweb.com/eric/tools/css/reset/)
sass
文件中的定义可能如下所示:
.your-component-reset {
div, span, object, iframe {
margin: 0;
padding: 0;
border: 0;
font-weight: normal;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
// add some more reset styles
}
为了避免在不想使用 sass
时写太多,只需使用通用选择器 *
:
.your-component-reset * {
margin: 0;
padding: 0;
font-weight: normal;
// other reset styles ...
}