Skip to content

全局运行时

UnoCSS 全局运行时提供了一个 CDN 构建版本,可直接在浏览器中运行 UnoCSS。它会检测 DOM 变化并动态生成样式。

使用方法

将以下代码添加到你的 index.html 文件中:

index.html
html
<script src="https://cdn.jsdelivr.net/npm/@unocss/runtime"></script>

可以在加载运行时之前定义配置来对运行时进行配置:

html
<!-- define unocss options... -->
<script>
  window.__unocss = {
    rules: [
      // custom rules...
    ],
    presets: [
      // custom presets...
    ],
    // ...
  }
</script>
<!-- ... and then load the runtime -->
<script src="https://cdn.jsdelivr.net/npm/@unocss/runtime"></script>

默认情况下,会应用 Wind3 预设

运行时不包含预飞行样式(preflights),如果你希望重置样式,可以添加自己的样式,或者使用 重置包 中的样式。

html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@unocss/reset/normalize.min.css" />
<!-- or -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@unocss/reset/tailwind.min.css" />

构建版本

有多种构建版本可用于不同的使用场景。

Uno(默认)

包含 @unocss/preset-wind3 预设:

html
<script src="https://cdn.jsdelivr.net/npm/@unocss/runtime/uno.global.js"></script>

属性化模式(Attributify)

包含 @unocss/preset-wind3@unocss/preset-attributify 预设:

html
<script src="https://cdn.jsdelivr.net/npm/@unocss/runtime/attributify.global.js"></script>

Mini

包含 @unocss/preset-mini@unocss/preset-attributify 预设:

html
<script src="https://cdn.jsdelivr.net/npm/@unocss/runtime/mini.global.js"></script>

核心版本

如果你需要灵活组合预设,可以仅加载核心运行时,然后手动指定预设。UnoCSS 的所有官方预设均可供使用。在初始化核心运行时之前,请加载所需的预设。

html
<script src="https://cdn.jsdelivr.net/npm/@unocss/runtime/preset-icons.global.js"></script>
<script>
  window.__unocss = {
    presets: [
      () =>
        window.__unocss_runtime.presets.presetIcons({
          scale: 1.2,
          cdn: 'https://esm.sh/',
        }),
    ],
  }
</script>
<script src="https://cdn.jsdelivr.net/npm/@unocss/runtime/core.global.js"></script>

Bundler 用法

bash
npm i @unocss/runtime
ts
import initUnocssRuntime from '@unocss/runtime'

initUnocssRuntime({ /* options */ })

可以使用 defaults 属性提供 UnoCSS 配置:

ts
import initUnocssRuntime from '@unocss/runtime'
import config from './uno.config'

initUnocssRuntime({ defaults: config })

预设可以从 esm.sh 导入:

ts
import { defineConfig } from '@unocss/runtime'
import presetIcons from 'https://esm.sh/@unocss/preset-icons/browser'
import presetWind3 from 'https://esm.sh/@unocss/preset-wind3'

export default defineConfig({
  presets: [presetWind3(), presetIcons({ cdn: 'https://esm.sh/' })],
})

防止 FOUC

由于 UnoCSS 在 DOM 准备好之后才运行,可能会出现“无样式内容闪烁”(FOUC)的情况,这可能会让用户看到页面处于无样式状态。

可以使用 un-cloak 属性,并结合 [un-cloak] { display: none } 这样的 CSS 规则,在 UnoCSS 为元素应用样式之前隐藏未样式化的元素。

css
[un-cloak] {
  display: none;
}
html
<div class="text-blue-500" un-cloak>This text will only be visible in blue color.</div>