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

Sass Modules添加多类名时嵌套SCSS样式未生效如何解决?

问题原因

存在两个核心问题导致样式不生效:

  1. SCSS嵌套选择器逻辑与实际DOM结构不匹配
    你当前写的嵌套SCSS代码编译后生成的CSS规则为:
.NonTablePricingTable_cell__3OzOv {
  /* cell对应的样式 */
}
.NonTablePricingTable_cell__3OzOv .NonTablePricingTable_iconColumn__2e9YO {
  width: 10%;
}

该规则的匹配逻辑是「父元素带cell类、子元素带iconColumn类」,但你实际是把两个类名挂载到了同一个元素上,自然无法匹配到对应的样式。
2. JSX类名属性拼写错误
React中指定元素类名的标准属性是大写开头的className,你第一个div写的是小写的classname,会被浏览器识别为自定义属性而非类名属性,这也是你渲染后的DOM里第一个元素是classname="xxx"、第二个正确元素是class="xxx"的直接原因。

排查解决步骤
  • 修正类名属性拼写:把所有小写的classname统一改为className,确保类名能正确挂载到DOM的class属性上。
  • 调整SCSS嵌套规则:如果要让同时带cell和iconColumn类的同一元素匹配样式,需要用父选择器标识符&修改嵌套写法:
.cell {
    width: 22.5%;
    display: flex;
    justify-content: center;
    flex-direction: column;
    position: relative;

    &.iconColumn {
        width: 10%;
    }
}

修改后编译出的CSS规则为.NonTablePricingTable_cell__3OzOv.NonTablePricingTable_iconColumn__2e9YO,可以正确匹配同时带两个类名的元素。

  • 如果iconColumn是通用独立样式,不需要和cell绑定,也可以直接把iconColumn提到和cell同级的位置即可。

内容的提问来源于stack exchange,提问作者Hana Likes Coding

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:06:08