什么是 UnoCSS?
UnoCSS 是即时的原子 CSS 引擎,旨在灵活且可扩展。核心是无意见的,所有 CSS 工具都是通过预设提供的。
例如,你可以通过在本地提供规则来定义自定义 CSS 工具 配置文件.
ts
import { defineConfig } from 'unocss'
export default defineConfig({
rules: [
['m-1', { margin: '1px' }],
],
})
这将为你的项目添加一个新的 CSS 工具 m-1
。由于 UnoCSS 是按需的,它在你代码库中使用它之前不会执行任何操作。所以假设我们有一个这样的组件
html
<div class="m-1">Hello</div>
m-1
将被检测到,并将生成以下 CSS
css
.m-1 { margin: 1px; }
为了使其更灵活,你可以通过更改规则的第一个参数(我们称之为匹配器)为 RegExp
,并将主体更改为函数来使你的规则动态化,例如
diff
export default defineConfig({
rules: [
- ['m-1', { margin: '1px' }],
+ [/^m-([\.\d]+)$/, ([_, num]) => ({ margin: `${num}px` })],
],
})
通过这样做,你现在可以拥有任意边距工具,例如 m-1
、m-100
或 m-52.43
。同样,UnoCSS 仅在使用它们时才会生成它们。
html
<div class="m-1">Hello</div>
<div class="m-7.5">World</div>
css
.m-1 { margin: 1px; }
.m-7.5 { margin: 7.5px; }
预设
创建了一些规则后,你可以将它们提取到一个预设中,并与他人共享。例如,你可以为公司的设计系统创建一个预设,并与你的团队共享。
ts
import { Preset } from 'unocss'
export const myPreset: Preset = {
name: 'my-preset',
rules: [
[/^m-([.\d]+)$/, ([_, num]) => ({ margin: `${num}px` })],
[/^p-([.\d]+)$/, ([_, num]) => ({ padding: `${num}px` })],
],
variants: [/* ... */],
shortcuts: [/* ... */],
// ...
}
ts
import { defineConfig } from 'unocss'
import { myPreset } from './my-preset'
export default defineConfig({
presets: [
myPreset, // your own preset
],
})
因此,同样,我们提供了一些 官方预设 供你立即开始使用,你也可以找到许多有趣的 社区预设.
体验
你可以在浏览器中尝试 UnoCSS,在 游乐场。或者在 交互式文档 中查找默认预设中的工具。
集成
UnoCSS 带有各种框架/工具的集成
示例
所有示例的源代码可以在 /examples 目录中找到。
qwik
vite-elm
vite-lightningcss