修改 antd 组件默认样式的坑丨 :global 关键字

1,501 阅读1分钟

前言

今天根据原型图做一个密码修改框的时候,需要修改 antd 表单 label 的默认样式,把 label 放到 input 框的上面,上个图大家就懂了:

DA257423-FDF3-4324-90C9-A9F238439C04.png

一开始感觉没啥问题,用 chrome 调试工具在页面上找到 antd 组件内相应的元素,修改对应的 class 达到效果后复制到了 VSCode 里:

image.png

但是,页面完全没有变化!!!!!!!

后来翻了其他项目的代码才发现这里有一个坑

在 React 项目中使用 scss/less,如果想让样式仅作用在某个组件,而不影响全局,一般都会把样式文件进行模块化,即打包后每个 class 名都会被自动加上一串唯一的序列号。举个例子:

    .main {
         width: 100px;
    }

模块化后打包的结果会是:

    .main__3D0Xe{ width: 100px; }

而我们公司的框架自动做了样式的模块化,因此正是这串序列号导致无法正确选中 antd 组件内部元素的 class

解决方法

如果不想要这串序列号,那么在最外层套上一层 :global 即可~

A5D2ACC6-875A-4848-A834-FC15D5A4647F.png