Appearance
什么是 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 只会在你使用这些工具类时才会生成相应的 CSS。
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
],
})
同样地,我们提供了一些官方预设供你立即使用,你还可以在社区预设中找到许多有趣的预设。
在线体验
你可以在浏览器中通过 Playground 来试用 UnoCSS。或者在 交互式文档 中查看默认预设提供的工具类。
集成
UnoCSS 为各种框架/工具提供了集成支持:
示例
所有示例的源代码都可以在 /examples 目录中找到。
astro
astro-vue
nuxt3
quasar
qwik
remix
sveltekit
sveltekit-preprocess
sveltekit-scoped
vite-angular
vite-elm
vite-lightningcss
vite-lit
vite-preact
vite-pug
vite-react
vite-solid
vite-svelte
vite-svelte-postcss
vite-vue3
vite-vue3-postcss