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

使用CSS Module时如何通过document.querySelector获取HTML元素?

问题核心原因是CSS Module编译会对类名做哈希重写,原始类名不会出现在最终渲染的DOM上,因此直接用原始类名做选择器无法匹配到元素,无前端框架场景下可以用以下几种方案解决:

解决方案

  • 方法1:直接使用CSS Module导出的哈希类名拼接选择器
    引入CSS Module时会得到一个存储了「原始类名-编译后哈希类名」映射的对象,直接用该对象属性拼接选择器即可正确匹配元素:
    // 引入CSS Module时的导出对象
    import styles from './style.module.css';
    // 原始类名为some-classname时的写法
    const targetEl = document.querySelector(`.${styles['some-classname']}`);
    
  • 方法2:通过自定义data属性定位(更稳定,优先推荐)
    完全避开类名哈希的影响,给目标元素添加自定义data-*属性,直接通过属性选择器匹配:
    给元素添加属性:<div data-target="custom-element"></div>
    选择器写法:const targetEl = document.querySelector('[data-target="custom-element"]');
  • 方法3:配置构建工具跳过指定类名的哈希处理
    可以在构建工具(Webpack/Vite等)的CSS Module配置项中,设置特定规则的类名不做哈希转换,比如配置前缀为global-的类名保留原始名称,后续给需要选中的元素加对应前缀的类名即可直接用原始类名匹配。

CSS Module哈希类名示例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:54:03