React 中引入 CSS 的方式
文章类型:React
发布者:hp
发布时间:2025-03-03
1:全局CSS文件
直接通过 import 引入外部 CSS 文件,适用于简单项目或快速开发场景
缺点=>易引发全局样式污染,需手动管理类名冲突
import './App.css'; // 全局生效
function App() {
return <div className="container">内容</div>;
} // :ml-citation{ref="1,2" data="citationList"}
2:CSS模块化
通过 .module.css 后缀实现组件级作用域,自动生成哈希类名
优势=>天然解决全局污染问题,适合中大型项目
import styles from './Component.module.css';
function Component() {
return <div className={styles.container}>内容</div>;
} // :ml-citation{ref="2,4" data="citationList"}
1:Styled Components
使用第三方库将样式嵌入组件
特点=>支持动态传参和主题切换,但需额外安装依
import styled from 'styled-components';
const StyledDiv = styled.div`
padding: 20px;
background: ${props => props.bgColor};
`;
function App() {
return <StyledDiv bgColor="#f0f0f0">内容</StyledDiv>;
} // :ml-citation{ref="2,4" data="citationList"}
1:对象写法
直接在 JSX 元素上通过 style 属性传递样式对象(小驼峰命名法)
const inlineStyle = { color: 'red', fontSize: '16px' };
function App() {
return <div style={inlineStyle}>内容</div>;
} // :ml-citation{ref="5,6" data="citationList"}
2:动态传参
结合组件状态或 Props 实现动态样式
function Button({ isActive }) {
return (
<button style={{
color: isActive ? 'white' : 'gray',
background: isActive ? 'blue' : 'transparent'
}}>
按钮
</button>
);
} // :ml-citation{ref="4,5" data="citationList"}
1:条件判断与三元表达式(通过逻辑运算符动态切换类名或样式)
function Alert({ type }) {
return (
<div className={`alert ${type === 'error' ? 'error-style' : 'info-style'}`}>
提示信息
</div>
);
} // :ml-citation{ref="4,5" data="citationList"}
2:基于状态的样式变化(结合useState实现交互式样式更新)
function ToggleButton() {
const [isOn, setIsOn] = useState(false);
return (
<button
className={isOn ? 'active' : 'inactive'}
onClick={() => setIsOn(!isOn)}
>
{isOn ? 'ON' : 'OFF'}
</button>
);
} // :ml-citation{ref="2,5" data="citationList"}
1:小型项目=>优先选择全局 CSS 或内联样式,减少配置成本
2:中大型项目=>采用 CSS 模块化或 CSS-in-JS 方案,确保可维护性和扩展性
3:动态交互场景=>使用 Styled Components 或内联样式,灵活处理状态驱动的样式变化