新项目是否上CSS框架取决于实际问题而非流行度;静态或组件化高项目可免框架,简单项目用PostCSS+utility class即可;Tailwind思路可借鉴但不必全量引入;管理后台优先选Chakra UI或Naive UI;IE11兼容选Bootstrap 4.6并精简引入。
新项目要不要上 CSS 框架,取决于你实际要解决的问题——不是“哪个最火”,而是“哪个能少写、少改、少踩坑”。纯静态页面或组件化程度高的项目,很可能根本不需要完整框架。
直接用 PostCSS + cssnano + 手写 utility class 就够了。Tailwind 的核心思路可以抄,但不必引入整个 tailwindcss 工具链。比如定义一组响应式间距:.p-2、.p-4、.md:p-6,用 @apply 或原生 :is() 组合即可。
容易踩的坑:
tailwind.config.js 并开启全部插件,导致打包体积暴涨@layer utilities 写错位置,导致自定义 class 不生效选 Chakra UI(React)或 Naive UI(Vue),它们自带语义化 CSS-in-JS 或 scoped CSS,样式不会全局污染,主题切换也只需改一个对象。比手写 BEM + postcss-preset-env 省心得多。
关键点:
Chakra UI 的 Box 和 Stack 组件默认带 margin collapse 处理,不用再写 * + * 重置Naive UI 的 n-config-provider 支持运行时换肤,但需注意 css-vars-hook 在 SSR 下可能不触发px 值,统一走 space.2 或 sizeSmall
绕开所有现代框架。用 Bootstrap 4.6(非 5.x),它仍保留 float 布局和独立 grid CSS 文件,不依赖 flex 或 gap。别碰 Bootstrap 5 的 data-bs-* 属性,IE 里解析会失败。
实操建议:
bootstrap-grid.css 和 reboot.css,禁用 bootstrap.css 全量文件.d-none .d-md-block 控制显隐,别用 visibility: hidden 模拟隐藏,IE 对 visibility 继承处理异常form-control 类,否则 IE 下 input 高度计算错误.container {
max-width: 1200px;
padding-left: 15px;
padding-right: 15px;
margin-left: auto;
margin-right: auto;
}
.row {
margin-left: -15px;
margin-right: -15px;
}
.col-md-6 {
float: left;
width: 50%;
padding-left: 15px;
padding-right: 15px;
}
真正难的不是选框架,是判断哪些样式逻辑该进 JS、哪些该保留在 CSS、哪些压根不该抽象——比如深色模式切换,用 @media (prefers-color-scheme: dark) 直接写 CSS 更稳,比靠 JS 切类名少一层故障点。