unocss: 又一个原子化的CSS框架,类比Tailwind

又一个神奇的css框架
更新于: 2024-03-10 19:59:32

安装

yarn add --dev unocss @unocss/preset-uno @unocss/preset-attributify @unocss/preset-icons

cheatsheet

功能用法
基本配置
# 安装
yarn add --dev unocss @unocss/preset-uno

# 配置 vite.config.ts
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import Unocss from 'unocss/vite';

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    react(),
    Unocss()
  ]
});

# App.ts
import 'uno.css'; // focus code
添加插件,可以在属性里写样式
yarn add --dev @unocss/preset-attributify
添加图标
# 添加图标库: https://icones.js.org/collection/gg
yarn add --dev @unocss/preset-icons
yarn add @iconify-json/gg

使用属性 attributify

<button
  bg="blue-400 hover:blue-500 dark:blue-500 dark:hover:blue-600"
  text="sm white"
  font="mono light"
  p="y-2 x-4"
  border="2 rounded blue-200"
>
  Button
</button>

简写

<button class="border border-red">
  Button
</button>
<p>可以简写为</p>
<button border="~ red">
  Button
</button>

使用ICON

<div className="i-gg-add-r w-4 h-4"></div>

unocss-shims.d.ts

针对 attributify 来添的支持,否则 eslint 会报错

import type { AttributifyAttributes } from '@unocss/preset-attributify'

declare module 'react' {
  interface HTMLAttributes<T> extends AttributifyAttributes {}
}

Uni VS Tailwind

1. 哲学和设计理念:
  - Tailwind CSS的设计理念是提供一组原子级别的CSS类,这些类可以直接应用于HTML元素,通过组合这些类可以快速构建界面。它鼓励开发者直接控制CSS类,而不是通过编写和维护大量特定样式的CSS规则。
  - UnoCSS则更注重于自动化样式生成和去除不需要的样式。它使用了静态分析和PurgeCSS算法,在编译过程中自动推断和优化样式,并移除未使用的样式。

2. 学习曲线:
  - Tailwind CSS相对较容易上手,只需要了解框架提供的一系列CSS类和相应的样式属性即可开始开发。
  - UnoCSS的学习曲线可能会更陡峭一些,因为它需要你了解如何配置和使用静态分析工具,以及如何通过配置文件精确控制样式的生成和优化。

3. 定制能力:
  - Tailwind CSS提供了丰富的配置选项,可以自定义颜色、字体、间距等属性。它还提供了一套强大的插件系统,允许你根据自己的需求扩展框架。
  - UnoCSS在一定程度上也可以定制,但它的主要设计目标是自动化样式生成和优化,所以相对来说定制能力较弱。

4. 社区生态:
  - Tailwind CSS拥有庞大的社区,有大量的教程、示例和优秀的第三方库和插件支持。
  - UnoCSS作为一个相对较新的项目,社区生态可能相对较小,但也在不断发展壮大。

综上所述,Tailwind CSS和UnoCSS都是强大而流行的CSS框架,选择哪个取决于你的个人偏好、项目需求和开发经验。如果你更注重自动化样式生成和优化,可以考虑UnoCSS;如果你更喜欢直接控制CSS类来构建界面,可以选择Tailwind CSS。

 

参考