原子化CSS

作者: shaokang 时间: May 23, 2024字数:2094

概念

原子化 CSS 是一种 CSS 架构,它通过将 CSS 样式拆分成更小的、可重用的组件来减少代码量。它倾向于小巧且用途单一的 class,并且会以视觉效果进行命名。

例: 预置的 class 列表

.m-1 {
    margin-top: 0.25rem;
}

.p-1 {
    padding-top: 0.25rem;
}

编码时直接在 class 中添加预置的 class 即可

<div class="m-1 p-1"></div

TailwindCSS

TailwindCSS 是一个开源的 CSS 框架,它提供了许多预置的 class,可以快速构建出各种样式。

优势

  1. 高效的样式管理
    • 实用类优先:TailwindCSS 提供了大量的实用类,可以直接在 HTML 中使用,大大减少了编写自定义 CSS 的时间。
    • 避免命名冲突:因为大部分样式都是通过实用类直接应用到元素上,不需要担心类名的命名冲突问题。
  2. 高度可定制
    • 配置文件:TailwindCSS 提供了一个强大的配置文件 tailwind.config.js,可以根据项目需求定制颜色、间距、字体等。
    • 插件系统:支持插件,可以扩展 TailwindCSS 的功能,满足各种自定义需求。
  3. 响应式设计
    • 内置响应式工具:TailwindCSS 提供了丰富的响应式工具类,可以轻松实现不同设备上的响应式设计。
    • 移动优先:默认采用移动优先的设计思路,简化了响应式设计的复杂度。
  4. 简化的开发流程
    • 快速原型设计:因为可以直接在 HTML 中使用实用类,开发者可以快速构建页面原型,进行设计和测试。
    • 减少上下文切换:开发者不需要频繁在 HTML 和 CSS 文件之间切换,提升了开发效率。
  5. 一致的设计
    • 统一的设计语言:通过配置文件,整个项目可以保持一致的设计语言,减少了样式不一致的问题。
  6. 小尺寸的最终文件
    • 按需打包:通过 PostCSS 和 PurgeCSS 等工具,TailwindCSS 可以移除未使用的 CSS 类,生成体积小的最终 CSS 文件,优化性能。
  7. 强大的社区和生态系统
    • 丰富的资源:TailwindCSS 拥有一个活跃的社区,提供了丰富的插件、模板和工具,可以加速开发进程。
    • 持续更新:TailwindCSS 团队和社区不断推出新功能和改进,保持框架的现代性和实用性。
  8. 文档全面
    • 详细的文档:TailwindCSS 提供了全面且易懂的文档,使得新手也能快速上手,并充分利用其功能。
  9. 支持现代框架
    • 兼容性:TailwindCSS 可以无缝集成到现代前端框架如 React, Vue, Angular 等中,提升了开发体验。
  10. 辅助开发
    • JIT 模式:TailwindCSS 2.1 引入了 Just-in-Time (JIT) 编译模式,可以在开发过程中即时生成所需的 CSS 类,提升开发效率。

UnoCSS

UnoCSS 是即时原子 CSS 引擎,其设计灵活且可扩展。核心是不固定的,所有 CSS 工具都是通过预设提供的。

优势

  1. 完全可定制。没有核心工具,所有功能通过预设提供。
  2. 即时。无需解析,无需 AST,无需扫描。它比 Windi CSS 或 Tailwind CSS JIT 快 5 倍。
  3. 轻量

更多见文档

TailwindCSS VS UnoCSS

定制化和扩展性:

Tailwind CSS 是一个 PostCSS 插件,而 UnoCSS 是一个同构引擎,具有与构建工具(包括 PostCSS 插件)的一流集成集合。这意味着 UnoCSS 可以更灵活地用于不同的地方。

UnoCSS 提供了高度可定制的配置系统,允许开发者根据项目需求自由定义 CSS 类、主题、插件等。其配置文件支持复杂的逻辑和条件,使得样式的定义可以非常灵活和动态。

  • 自定义规则:可以定义自定义的 CSS 规则,甚至是复杂的样式生成逻辑。
  • 主题扩展:支持多主题,可以根据不同场景切换主题,满足多样化的需求。
  • 配置选项:提供了丰富的配置选项,可以调整生成的 CSS 类的前缀、分隔符等,避免与其他类名冲突。

为什么选择 UnoCSS

性能方面:

Tailwind 依赖于 PostCSS 的 AST 进行修改,需要借助 PurgeCSS 等工具来优化最终文件大小。

UnoCSS 即时编译和按需生成机制,更有优势。

UnoCSS 通过非常高效的字符串拼接来直接生成对应的 CSS 而非引入整个编译过程。同时,UnoCSS 对类名和生成的 CSS 字符串进行了缓存,当再次遇到相同的实用工具类时,它可以绕过整个匹配和生成的过程。比 Tailwind CSS JIT 快 5 倍。