写样式写到秃头?改颜色改到流泪?别慌,前端人有三宝:原子 CSS、模块化、pxtorem!用了之后,样式几乎不用写!
前言:写样式是一种玄学
如果你曾有以下遭遇:
- 改个按钮颜色,全站按钮都跟着变色;
- 搞个 padding,结果手机上爆炸了;
- 组件样式写得越来越多,越写越像意大利面......
别怕,我们今天就用一套组合拳,让你从此不再为样式发愁:
样式能复用
改样式不怕"连坐"
适配设计稿只需写 px,自动帮你换算
最重要的------写样式的机会都少了!
一、原子 CSS:别写了,拿现成的拼!
说人话:
原子 CSS 就是把每个样式都拆成最小颗粒,比如
text-center
、bg-red-500
、mt-10
,你用的时候就像拼积木一样组合起来。
举个栗子,瞬间懂:
传统写法
css
/* styles.css */
.btn {
padding: 12px 24px;
background-color: red;
color: white;
text-align: center;
}
使用:
css
<button class="btn">点我!</button>
原子 CSS 写法
css
<button class="px-6 py-3 bg-red-500 text-white text-center">
点我!
</button>
是不是像点外卖一样爽?啥都有,不用做!
二、App.css:咱家的通用工具箱
你家装修是不是也有一堆常用工具?锤子、电钻、胶带?
在前端项目里,这些「工具」就是 App.css:
css
/* App.css */
.text-center { text-align: center; }
.mt-20 { margin-top: 20px; }
.text-gray { color: #666; }
.font-bold { font-weight: bold; }
全局通用,不管哪个页面、哪个组件,都能直接拿来用!你再也不用每次写 .title { text-align: center }
了。
三、module.css:我家门我锁,别乱改我样式!
虽然原子类很好用,但有些特别场景,还是得自己写:
- 比如复杂动画、hover 特效;
- 或者你就是想封装一个组件用私有样式。
这时候我们用 .module.css
,作用域隔离,每个组件的样式只对自己负责!
css
import styles from './Card.module.css'
function Card() {
return <div className={styles.card}>✨我是卡片✨</div>
}
css
/* Card.module.css */
.card {
animation: fadeIn 0.5s ease-in;
background-color: white;
border-radius: 10px;
}
这样你就可以安心写样式,根本不用担心"改这里炸那里"。
四、移动端适配:设计师爱谁谁,750px设计稿照样搞定!
设计稿 750px?你写的时候是 px
,上线之后全乱套?
兄弟,这事得交给两位大神:
lib-flexible
干嘛的?自动设置根元素的字体大小,搞定 rem
适配,屏幕变大它自动变,灵活得一批。
arduino
import 'lib-flexible'
用完你会发现:诶,页面怎么自动适配啦!
✨ postcss-pxtorem
干嘛的?帮你把所有 px
单位变成 rem
,你写的是:
css
padding: 30px;
它偷偷变成:
css
padding: 0.4rem; /* 比例算好的! */
搭配配置文件一起用:
js
// postcss.config.js
module.exports = {
plugins: {
'postcss-pxtorem': {
rootValue: 75, // 设计稿为 750px
propList: ['*'],
},
},
}
写代码的时候继续用 px
,编译后全变成 rem
,你根本不用动脑子算比例!
五、这一整套长什么样?来一个实战小例子!
页面结构:
js
import './App.css'
import styles from './Card.module.css'
export default function App() {
return (
<div className="p-4 bg-gray-100">
<h1 className="text-center text-2xl font-bold text-blue-600 mt-20">
原子 CSS 万岁!
</h1>
<div className={styles.card}>🎉 卡片组件样式独立!</div>
</div>
)
}
Card.module.css:
css
.card {
padding: 20px;
border: 1px solid #eee;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0,0,0,0.05);
animation: fadeIn 0.5s ease-in;
}
上线之后效果美美哒,而且样式逻辑清晰无比!
面试场景模拟
面试官:你们项目样式怎么写的?
你:
"我们使用原子 CSS 拆分基础样式,通过 App.css 实现全局复用,组件内样式使用 CSS Module 避免污染;移动端适配方面结合 lib-flexible 和 postcss-pxtorem,px 写起来,rem 自动转,不用换算,开发效率很高。"
(你看他眼睛一亮,这题稳了!)
🧾 总结:从今天起,不再当 CSS 奴隶!
整套流畅流程再过一遍:
✅ App.css 放通用样式,像工具箱一样随拿随用
✅ 原子类写布局/颜色/字体/间距,像拼乐高一样方便
✅ 特殊样式就写 module.css,组件私有不影响别人
✅ 写 px,自动转 rem,设计稿无脑还原!
写样式再也不会手忙脚乱,从此你也是"前端整洁之道"代言人!
❤️ 结尾唠两句
如果你看懂了,恭喜你,距离"前端样式自由"又近了一步!
如果你觉得本文对你有用,点个赞、转发一下,别让你朋友再为写样式掉头发啦!