Carmineprince's Blog
首页
    • HTML
    • CSS
    • JavaScript
    • Vue
    • React
    • TypeScript
    • Node
    • Flutter
    • Electron
    • Python
    • 运维
    • 重学前端
  • 分类
  • 标签
  • 归档

Ziqi Wang

胡思乱想程序员
首页
    • HTML
    • CSS
    • JavaScript
    • Vue
    • React
    • TypeScript
    • Node
    • Flutter
    • Electron
    • Python
    • 运维
    • 重学前端
  • 分类
  • 标签
  • 归档
  • 用TypeScript编写React的最佳实践
  • 项目结构搭建-慕课笔记
  • react17+ts+umi构建移动端web项目
  • CssModule同元素使用多个ClassName
  • 如何优雅的修改antd中的默认样式
    • 前言
    • 直接引入全局Css的方式进行覆盖(否定)
    • 使用:global包裹选择(推荐)
    • 对比参照Vue
  • React+Umi3的数据流解决方案-dva
  • Module "xxx" does not exist in container
  • React Hook详解
  • React相关
carmineprince
2022-02-17

如何优雅的修改antd中的默认样式

# 如何优雅的修改antd中的默认样式

# 前言

项目需要初学React,在使用antd mobile 的过程中,发现Form表单默认的样式有上下横线,因为项目使用的Css module,写的类名会进行hash,所以使用常规的写法没办法选择.adm-list-default .adm-list-body

const Account: React.FC = () => {
  return (
    <div>
      <Form className={s.form}>
        <Form.Item label="输入框">
          <Input></Input>
        </Form.Item>
      </Form>
    </div>
  );
};
1
2
3
4
5
6
7
8
9
10
11

# 直接引入全局Css的方式进行覆盖(否定)

这样虽然可以直接选中.adm-list-default .adm-list-body,但是也有可能造成全局变量名的污染。并且同样的组件导入两个css文件不太符合单一性原则

# 使用:global包裹选择(推荐)

css module针对全局的样式(使用:global包裹的),不会将类名进行hash化,换句话来说,我们可以利用这一点,将antd组件外部用来精细化控制样式的类定义在:global中,这样就避免了类名hash化,可以配合antd的类名规则,实现样式控制。

less:

.form {
    :global {
      .adm-list-default .adm-list-body {
        border: 0;
      }
    }
}
1
2
3
4
5
6
7

# 对比参照Vue

:global跟Vue中的:deep有异曲同工之处,都是在hash类的子类中不进行类名的hash从而选择指定的样式类

#react#antd#css
上次更新: 2/17/2022, 3:13:46 PM
CssModule同元素使用多个ClassName
React+Umi3的数据流解决方案-dva

← CssModule同元素使用多个ClassName React+Umi3的数据流解决方案-dva→

最近更新
01
pc端rem配置
03-02
02
使用动态变量ts报错的解决
02-25
03
React Hook详解
02-18
更多文章>
Theme by Vdoing | Copyright © 2021-2022 Carmineprince | 鲁ICP备2021046263号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式