UnoCSS详细使用说明文档

234 阅读6分钟

start

2025年,回首过往,思绪如窗前的苍蝇,嗡嗡作响。此刻,我打开记忆的窗,倒一倒脑子,看看那些岁月里留下了什么。

个人理解

  • UnoCSS 原子引擎的作用:在大型项目维护中,其核心价值在于让公共样式更加规范,极大地降低了对人员专业能力的要求。
    • 旧模式之困:以往,前端项目依赖全局公共样式文件进行统一管理。然而,在前端架构相对松散的背景下,这种方式往往导致全局样式利用率低下,样式代码散乱无章,对开发人员的专业素养提出了极高要求。
    • 类比思考:相比之下,Java 架构的管理则严格得多,即使是创建一个简单的 “Hello World” 项目,也需要完整安装整个架构才能启动;这种严谨性在前端领域并不常见。
    • 前端架构之变:前端领域中,Angular 架构与 Java 架构类似,要求严格且完整;而 Vue、React 以及其他新兴架构则更倾向于渐进式、逐步增长的方式,这种方式更符合前端开发的实际需求。
    • 前端渐进的根本:前端开发的核心在于文件的轻量化,因为前端文件需要通过网络传输,越小的文件才能实现更快的加载速度。这与后端架构有着天然的区别,后端文件仅在服务器运行,无需考虑网络传输的限制。

简介

UnoCSS 是一个高性能的原子化 CSS 引擎,由 Vite 团队成员 Anthony Fu 开发。它具有以下特点:

  • 高性能:采用预设扫描和即时生成方式,按需生成样式,无需打包未使用的样式。
  • 可定制性强:完全可定制的原子化 CSS 引擎,支持自定义规则、快捷方式、变体等。
  • 体积小:按需生成,体积小。
  • 灵活:支持属性化模式、纯 CSS 图标等特性。

快速体验

官方提供的 CDN 访问缓慢、异常,我自己整理提供一份,可以自取,进行快速体验、验证和研究!

Gitee unocss-demo

基础用法

文字样式

<div class="text-4xl font-600 font-italic underline lh-tight">
	文字
</div>
  • text-4xl:设置字体大小为 4xl
  • font-600:设置字体粗细为 600
  • font-italic:设置字体为斜体
  • underline:设置下划线
  • lh-tight:设置行高为紧凑

边框样式

<div class="border-2 rd-2xl border-dashed inline-block lh-10 text-4xl lh-20">
    文字
</div>
  • border-2:设置边框宽度为 2
  • rd-2xl:设置圆角为 2xl
  • border-dashed:设置边框为虚线
  • inline-block:设置为行内块元素
  • lh-10:设置行高为 10
  • lh-20:设置行高为 20

边距样式

<div class="p-x-4 py-8 mb-2 mt-3 inline-block border-2">
    边距
</div>
  • p-x-4:设置水平内边距为 4
  • py-8:设置垂直内边距为 8
  • mb-2:设置下外边距为 2
  • mt-3:设置上外边距为 3

宽高样式

<div class="w-40 h-30 border-2 py-2">
    <div class="h-full w-screen border-dashed border-1">宽高</div>
</div>
  • w-40:设置宽度为 40
  • h-30:设置高度为 30
  • h-full:设置高度为父元素的 100%
  • w-screen:设置宽度为屏幕宽度
  • border-dashed:设置边框为虚线
  • border-1:设置边框宽度为 1

颜色样式

<div class="w-40 h-30 bg-stone p-2">
    <div class="bg-pink op-30 mb-2">背景</div>
    <div class="bg-blue color-green p-2">颜色</div>
</div>
  • bg-stone:设置背景颜色为 stone
  • bg-pink:设置背景颜色为 pink
  • op-30:设置不透明度为 30%
  • color-green:设置字体颜色为 green

Flex 布局

<div class="flex justify-center items-center">
    <div class="w-20 h-20 bg-red-500"></div>
    <div class="w-20 h-20 bg-green-500"></div>
</div>
  • flex:启用 Flexbox 布局
  • justify-center:水平居中对齐
  • items-center:垂直居中对齐

111

<div class="center">
    <div class="w-20 h-20 bg-red-500"></div>
    <div class="w-20 h-20 bg-green-500"></div>
</div>
  • w-20:同样设置宽度为20单位
  • h-20:同样设置高度为20单位
  • bg-green-500:设置背景颜色为绿色(具体颜色值由CSS框架定义,通常是某种绿色的深浅变体)

高级用法

响应式设计

<div class="sm:text-left md:text-center lg:text-right">
    响应式文本对齐
</div>
  • sm:text-left:在小屏幕上文本左对齐
  • md:text-center:在中等屏幕上文本居中对齐
  • lg:text-right:在大屏幕上文本右对齐

动画效果

<div class="animate-bounce animate-duration-2s">
    弹跳动画
</div>
  • animate-bounce:启用弹跳动画
  • animate-duration-2s:设置动画持续时间为 2

属性化模式

<button bg="blue-400 hover:blue-500" text="sm white" font="mono light" p="y-2 x-4" border="2 rounded blue-200">
    Submit
</button>
  • bg="blue-400 hover:blue-500":设置背景颜色为 blue-400,悬停时为 blue-500
  • text="sm white":设置字体大小为小,字体颜色为白色
  • font="mono light":设置字体为等宽,字体粗细为轻
  • p="y-2 x-4":设置垂直内边距为 2,水平内边距为 4
  • border="2 rounded blue-200":设置边框宽度为 2,边框为圆角,边框颜色为 blue-200

UnoCSS 的适用场景

  • 快速开发:适用于需要快速搭建界面的场景,例如简单的官网页面、响应式H5页面、业务复杂度低的中后台系统
  • 高性能需求:特别适合大型应用或对构建速度、性能有较高要求的项目。按需生成 CSS 的方式可以显著减少最终打包体积
  • 高度定制化:对于需要自定义设计系统或有特殊样式需求的项目,UnoCSS 的灵活性和定制能力能够提供更好的支持

推荐程度

  • 高推荐:如果你的项目对性能优化有较高要求,或者需要高度定制化的样式,且团队能够接受一定的学习成本,那么推荐使用 UnoCSS
  • 中等推荐:对于中等复杂度的项目,尤其是团队对原子化 CSS 有一定了解的情况下,UnoCSS 也是一个不错的选择
  • 低推荐:如果项目非常复杂,需要频繁的组件复用和团队协作,且对性能优化要求不高,那么可能更适合使用传统的组件化框架

与 ElementUI 及 Tailwind CSS 的对比

与 ElementUI 对比

  • ElementUI:更适合快速开发且需要完整组件库支持的项目,尤其是Vue项目;它提供了丰富的预定义组件和统一的样式体系,适合团队协作
  • UnoCSS:更适合需要高度定制化样式、对性能有较高要求的项目;虽然没有内置的组件库,但可以通过原子类组合实现复杂样式

与 Tailwind CSS 对比

  • Tailwind CSS:社区庞大,文档和资源丰富,适合团队开发和快速构建设计系统;它的类名标准化,易于理解和使用
  • UnoCSS:性能更优,按需生成 CSS,文件体积更小;提供了更高的灵活性和定制能力,但社区相对较小

总结

选择建议

  • 如果你更关注开发速度和团队协作,且需要丰富的组件库支持,ElementUI 或 Tailwind CSS 可能是更好的选择
  • 如果你更关注性能优化和高度定制化,且能够接受一定的学习成本,UnoCSS 是一个值得尝试的工具

市场现状

目前,Tailwind CSS 在原子化 CSS 框架中占据主导地位,拥有更成熟的社区和丰富的资源。但 UnoCSS 凭借其高性能和灵活性,在一些特定场景下具有独特的优势

end

恳请诸位同仁、挚友、兄弟姐妹不吝赐教,多多指点!