跳到主要内容

CSS 样式

直接使用 CSS

example.css
.title {
text-align: center;
font-weight: bold;
}

导入 CSS 文件可以直接使用样式:

import './example.css'

function example() {
return <div className="title">文字</div>
}
注意

直接引入 CSS 文件,会产生样式全局污染问题,我们通常使用 CSS Modules 技术。

CSS Modules

CSS Modules 的核心作用是解决 CSS 样式全局污染问题。CSS Modules 会自动将类名编译为唯一哈希值(如 button 可能变成 Button__button--1a2b3),确保每个类名仅在当前模块(文件)内有效,从根本上避免冲突。

任何以 .module.css 为后缀名的 CSS 文件都被认为是一个 CSS modules 文件。可参考 CSS Module 文档

example.module.css
.red {
color: red;
}

导入这样的文件会返回一个相应的模块对象。

import styles from './example.module.css'

function example() {
return <div className={styles.red}>文字</div>
}

覆盖样式

有时候我们需要覆盖第三方组件的样式,使用 :global() 可以让内部的选择器跳过哈希化,保持全局生效,从而覆盖其他模块的样式。

/* 用 :global() 包裹需要全局生效的选择器 */
:global(.ant-btn) {
background: red; /* 覆盖 Antd 按钮的背景色 */
}

/* 也可以嵌套使用,限制作用范围 */
.container :global(.ant-btn) {
background: red /* 仅覆盖 .container 内的 Antd 按钮 */
}