Jul*_*ode 5 javascript css emotion reactjs
我目前需要将库的通用组件集成到多个网站中。组件库目前有一个全局样式。他们以下列方式注入:
<Global
styles={`
div {
padding: 0;
}
`}
/>
Run Code Online (Sandbox Code Playgroud)
我希望“全局样式”仅适用于该库的组件。它们只出现在页面的一部分上。
所以我试过这个:
const Styles = styled.div`
div {
padding: 0;
}
`;
const Page = () => (
<Styles>
<SomeComponentsOfTheLibrary />
</Styles>
);
Run Code Online (Sandbox Code Playgroud)
但似乎所有的东西Styles都有优先权。然后,如果组件padding: 10px;将采取padding: 0;的Styles
这是重现的问题:
我知道这是一个 css 问题,但我想用情感来解决它
我已经看到了:
如何将全球风格融入情感范围?
@Andarist通过创建一个额外范围的 stylis 插件找到了解决方案
const STRONG_ID = 'very-strong-id';
const cache = createCache({
stylisPlugins: [createExtraScopePlugin(`#${STRONG_ID}`)],
});
Run Code Online (Sandbox Code Playgroud)
<CacheProvider value={cache}>
<Global
styles={css`
div {
background-color: red;
}
`}
/>
<div id={STRONG_ID}>
<div>I must be red (global style scoped to the parent div)</div>
<Container>
I must be blue (local style defined on this div)
</Container>
</div>
</CacheProvider>
Run Code Online (Sandbox Code Playgroud)
那么你的全局样式的范围将是very-strong-id
您可以在这里找到示例
希望它能帮助将来的人