Wind4 預設
UnoCSS 的 Tailwind4 CSS 緊湊預設。它完全兼容 PresetWind3 的所有功能,並進一步增強。
TIP
建議花一點時間閱讀本文檔以瞭解變化
安裝
pnpm add -D @unocss/preset-wind4yarn add -D @unocss/preset-wind4npm install -D @unocss/preset-wind4bun add -D @unocss/preset-wind4import presetWind4 from '@unocss/preset-wind4'
import { defineConfig } from 'unocss'
export default defineConfig({
presets: [
presetWind4(),
// ^?
],
})兼容性
請參考 Tailwind 兼容性 瞭解瀏覽器支持和兼容性。
主題
PresetWind4 的主題幾乎與 PresetWind3 的主題相同,但一些主題鍵已經調整。
WARNING
切換到 PresetWind4 時,請注意查看下錶,檢查您的主題鍵配置並進行適當的調整。
| PresetWind3 | PresetWind4 |
|---|---|
fontFamily | font |
fontSize | 移動到 text 的 fontSize 屬性 |
lineHeight | 移動到 text 的 lineHeight 屬性或使用 leading |
letterSpacing | 移動到 text 的 letterSpacing 屬性或使用 tracking |
borderRadius | radius |
easing | ease |
breakpoints | breakpoint |
verticalBreakpoints | verticalBreakpoint |
boxShadow | shadow |
| - | insetShadow |
尺寸屬性如 width、height、maxWidth、maxHeight、minWidth、minHeight | 統一使用 spacing |
transitionProperty | property |
gridAutoColumn、gridAutoRow、gridColumn、gridRow、gridTemplateColumn、gridTemplateRow | - |
container.maxWidth | containers.maxWidth |
| - | defaults |
Theme.defaults
Theme.defaults 是一個全局默認主題配置,將應用於 reset 樣式或用作某些規則的默認值。
以下是 Theme.defaults 的默認值,您可以在主題配置中覆蓋它們。
點擊查看默認值
import type { Theme } from '@unocss/preset-wind4/theme'
export const defaults: Theme['defaults'] = {
transition: {
duration: '150ms',
timingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',
},
font: {
family: 'var(--font-sans)',
featureSettings: 'var(--font-sans--font-feature-settings)',
variationSettings: 'var(--font-sans--font-variation-settings)',
},
monoFont: {
family: 'var(--font-mono)',
featureSettings: 'var(--font-mono--font-feature-settings)',
variationSettings: 'var(--font-mono--font-variation-settings)',
},
}選項
PresetWind4 的基本配置類似於 PresetWind3,但有以下重要變化。
重置樣式
在 PresetWind4 中,我們將重置樣式與 tailwind4 對齊並在內部集成。您不需要安裝任何額外的 CSS 重置包,如 @unocss/reset 或 normalize.css。
import '@unocss/reset/tailwind.css'
import '@unocss/reset/tailwind-compact.css'您只需要通過開關控制是否啟用重置樣式:
import presetWind4 from '@unocss/preset-wind4'
import { defineConfig } from 'unocss'
export default defineConfig({
presets: [
presetWind4({
reset: true,
// ^?
}),
],
})實用工具解析器
在 PresetWind4 中,我們升級了 postProcess 鉤子以提供更簡潔的 API。現在您可以直接在預設中自定義 utilities。
例如,如果您想使用 presetRemToPx 預設將 rem 轉換為 px,您不再需要單獨導入此預設,因為 presetWind4 內部已經提供了這一功能。
import { createRemToPxResolver } from '@unocss/preset-wind4/utils'
import { defineConfig, presetWind4 } from 'unocss'
export default defineConfig({
presets: [
presetWind4({
utilityResolver: createRemToPxResolver()
}),
],
})您可以自定義更多解析器集來處理 utilities 並輸出您想要的 CSS。
關於具體實現方法,請參考 postProcess 或 presetWind4 測試用例
主題預處理
選擇如何生成主題 CSS 變量。
安裝了 presetWind4 的 UnoCSS 引擎在解析實用工具時會自動收集主題依賴,並在最後生成 CSS 變量。
true:完全生成主題鍵。false:禁用主題鍵。(不推薦 ⚠️)'on-demand':僅在使用時生成主題鍵。-> ✅ (默認)
生成的 CSS
在 PresetWind4 的輸出中,新增了兩個圖層:theme 和 cssvar-property。
| 圖層名稱 | 描述 | 順序 |
|---|---|---|
cssvar-property | 由 @property 定義的 CSS 屬性 | -200 |
theme | 主題相關的 CSS 變量 | -150 |
cssvar-property 圖層
我們在許多規則中使用 @property 來定義 CSS 屬性,以實現更好的性能和更小的體積。
例如,常用的實用工具如 text-op-xx、bg-op-xx 等。
@property --un-text-opacity {
syntax: '<percentage>';
inherits: false;
initial-value: 100%;
}theme 圖層
我們將主題相關的 CSS 變量放在 theme 圖層中,使您更容易覆蓋和直接使用。 它可以是全面的或按需的。它始終來自您的主題配置。
:root,
:host {
--spacing: 0.25rem;
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
--font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
--colors-black: #000;
--colors-white: #fff;
/* ... */
}與其他預設的兼容性
PresetWind4 增強併兼容 PresetWind3。由於其他包最初是為 PresetWind3 開發的,因此在一起使用時可能會出現一些問題。已知的問題包括:
presetWebFonts
在使用 presetWebFonts 和 PresetWind4 時,不再支持 fontFamily 主題鍵。 請進行以下調整:
import { defineConfig, presetWebFonts, presetWind4 } from 'unocss'
export default defineConfig({
presets: [
presetWind4(),
presetWebFonts({
themeKey: 'font',
// ^?
}),
],
})presetLegacyCompat
在 presetWind4 中,我們使用 oklch 顏色模型以支持更好的顏色對比度和顏色感知。因此,它與 presetLegacyCompat 不兼容,不建議一起使用。
請參考兼容性部分了解更多信息。
transformDirectives
transformDirectives 與 PresetWind4 配合使用時可能會出現問題。請謹慎使用。
WARNING
- 當使用
@apply處理具有@property的規則時,不同圖層級別之間可能會發生衝突。