使用 css 模块如何定义全局 class
Using css modules how do I define a global class
我正在使用 css 模块,但是我在组件中使用的一个库来附加带有 JavaScript 的推文,在以下结构中向我的组件添加了一些元素:
<div class='user'></div>
<div class='tweet'></div>
我现在想在组件的 css 模块中设置这些元素的样式,如下所示:
MyComponent.css
.user {
/* styles */
}
.tweet {
/* styles */
}
当然,由于 webpack 加载程序中的哈希命名,现在我的 .user
class 更改为 .MyComponent__user___HZWfM
。
如何在我的 css 模块中设置全局样式?
根据css modules docs,:global
切换到当前选择器的全局范围。例如
:global(.example-classname)
所以这应该有效:
:global(.tweet) {
text-align: left;
}
:global(.user) {
text-align: left;
}
或者定义一个全局块
:global {
.tweet {
text-align: left;
}
.user {
text-align: left;
}
}
许多人都为此苦苦挣扎,似乎没有任何人同意解决方案。我已经解决的问题涉及对您的捆绑器进行一些调整,并专门解决了按原样导入库的需要,而无需包装它们或手动编辑它们。
在我的 webpack 配置中,我将其设置为扫描所有以 css 结尾的文件,但 'node_modules' 和 'src/static' 文件夹中的文件除外。我从这里导入我的库,它们不会受到类名转换的影响,所以我可以自由地为全局 css 使用常规类名,像往常一样为模块化 css 使用 className={styles.element} 约定(这将编译为 .component_element__1a2b3 或类似的东西)。
这是使用此解决方案的工作生产 webpack 配置示例:
http://pastebin.com/w56FeDQA
我正在使用 css 模块,但是我在组件中使用的一个库来附加带有 JavaScript 的推文,在以下结构中向我的组件添加了一些元素:
<div class='user'></div>
<div class='tweet'></div>
我现在想在组件的 css 模块中设置这些元素的样式,如下所示:
MyComponent.css
.user {
/* styles */
}
.tweet {
/* styles */
}
当然,由于 webpack 加载程序中的哈希命名,现在我的 .user
class 更改为 .MyComponent__user___HZWfM
。
如何在我的 css 模块中设置全局样式?
根据css modules docs,:global
切换到当前选择器的全局范围。例如
:global(.example-classname)
所以这应该有效:
:global(.tweet) {
text-align: left;
}
:global(.user) {
text-align: left;
}
或者定义一个全局块
:global {
.tweet {
text-align: left;
}
.user {
text-align: left;
}
}
许多人都为此苦苦挣扎,似乎没有任何人同意解决方案。我已经解决的问题涉及对您的捆绑器进行一些调整,并专门解决了按原样导入库的需要,而无需包装它们或手动编辑它们。
在我的 webpack 配置中,我将其设置为扫描所有以 css 结尾的文件,但 'node_modules' 和 'src/static' 文件夹中的文件除外。我从这里导入我的库,它们不会受到类名转换的影响,所以我可以自由地为全局 css 使用常规类名,像往常一样为模块化 css 使用 className={styles.element} 约定(这将编译为 .component_element__1a2b3 或类似的东西)。
这是使用此解决方案的工作生产 webpack 配置示例: http://pastebin.com/w56FeDQA