You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Next.js CSS Modules中为哈希类设置全局变体样式?

解决CSS Modules中哈希类与全局变体的样式设置问题

你之前的写法问题出在&和:global()之间多了空格,导致编译成了后代选择器,而不是你需要的同一元素的多类选择器。

正确的SCSS写法:

.text {
  background: black;
  // 去掉&与:global之间的空格,实现同一元素的类组合
  &:global(.background--red) {
    background: red;
  }
}

注意:这里的.text要和你JSX里styles["text"]对应的类名完全一致,这样编译后才会关联上带哈希的类。

编译后的输出:

会生成你期望的格式:

.styles_text__[HASH].background--red {
  background: red;
}

你的JSX写法是正确的,无需修改:

<div className={`${styles["text"]} background--red`}>
    <h1>Lorem ipsum</h1>
</div>

关键说明:

  • &在SCSS嵌套中代表当前父选择器,也就是编译后的带哈希的.styles_text__[HASH]
  • :global()包裹的类名不会被CSS Modules哈希化,保持原名称background--red
  • 两者直接相连(无空格)表示同一元素同时拥有这两个类时应用样式,这才是你需要的逻辑

内容的提问来源于stack exchange,提问作者Jonas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:04:56