Skip to content

Wind4 preset

UnoCSS用のTailwind4 CSSコンパクトプリセット。PresetWind3のすべての機能と互換性があり、さらに機能を強化しています。

ソースコード

TIP

このドキュメントを読んで変更点を理解することをお勧めします

インストール

bash
pnpm add -D @unocss/preset-wind4
bash
yarn add -D @unocss/preset-wind4
bash
npm install -D @unocss/preset-wind4
bash
bun add -D @unocss/preset-wind4
ts
import presetWind4 from '@unocss/preset-wind4'
import { defineConfig } from 'unocss'

export default defineConfig({
  presets: [
    presetWind4(),
    //  ^?
  ],
})

互換性

ブラウザのサポートと互換性については、Tailwind互換性を参照してください。

テーマ

PresetWind4のテーマはPresetWind3のテーマとほぼ同じですが、一部のテーマキーが調整されています。

WARNING

PresetWind4に切り替える際は、以下の表を参照してテーマキーの設定を確認し、適切な調整を行ってください。

PresetWind3PresetWind4
fontFamilyfont
fontSizetextfontSizeプロパティに移動
lineHeighttextlineHeightプロパティに移動、またはleadingを使用
letterSpacingtextletterSpacingプロパティに移動、またはtrackingを使用
borderRadiusradius
easingease
breakpointsbreakpoint
verticalBreakpointsverticalBreakpoint
boxShadowshadow
-insetShadow
widthheightmaxWidthmaxHeightminWidthminHeightなどのサイズプロパティspacingに統一
transitionPropertyproperty
gridAutoColumngridAutoRowgridColumngridRowgridTemplateColumngridTemplateRow-
container.maxWidthcontainers.maxWidth
-defaults

Theme.defaults

Theme.defaultsは、resetスタイルに適用されるか、特定のルールのデフォルト値として使用されるグローバルデフォルトテーマ設定です。

以下はTheme.defaultsのデフォルト値です。テーマ設定で上書きすることができます。

デフォルト値を表示するにはクリック
ts
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に合わせて内部に統合しています。@unocss/resetnormalize.cssなどの追加のCSSリセットパッケージをインストールする必要はありません。

ts
import '@unocss/reset/tailwind.css'
import '@unocss/reset/tailwind-compact.css'

スイッチを通じてリセットスタイルを有効にするかどうかのみを制御します:

ts
import presetWind4 from '@unocss/preset-wind4'
import { defineConfig } from 'unocss'

export default defineConfig({
  presets: [
    presetWind4({
      reset: true, 
      // ^?
    }),
  ],
})

ユーティリティリゾルバー

PresetWind4では、postProcessフックをアップグレードして、より簡潔なAPIを提供しています。プリセット内のutilitiesを直接カスタマイズできるようになりました。

例えば、presetRemToPxプリセットを使用してrempxに変換したい場合、presetWind4がこの機能を内部で提供しているため、このプリセットを個別にインポートする必要はありません。

ts
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の出力では、themecssvar-propertyの2つの新しいレイヤーが追加されています。

レイヤー名説明順序
cssvar-property@propertyで定義されたCSSプロパティ-200
themeテーマ関連のCSS変数-150

cssvar-propertyレイヤー

多くのルールで@propertyを使用してCSSプロパティを定義し、より良いパフォーマンスと小さいサイズを実現しています。

例えば、text-op-xxbg-op-xxなどの一般的なユーティリティ。

css
@property --un-text-opacity {
  syntax: '<percentage>';
  inherits: false;
  initial-value: 100%;
}

themeレイヤー

テーマ関連のCSS変数をthemeレイヤーに配置し、オーバーライドや直接使用を容易にしています。 包括的またはオンデマンドにすることができます。常にテーマ設定から取得されます。

css
: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;
  /* ... */
}

他のプリセットとの互換性

PresetWind4PresetWind3を強化し、互換性があります。他のパッケージは元々PresetWind3用に開発されたため、一緒に使用する際に問題が発生する可能性があります。既知の問題は以下の通りです:

presetWebFonts

presetWebFontsPresetWind4と一緒に使用する場合、fontFamilyテーマキーはサポートされなくなりました。 以下の調整を行ってください:

ts
import { defineConfig, presetWebFonts, presetWind4 } from 'unocss'

export default defineConfig({
  presets: [
    presetWind4(),
    presetWebFonts({
      themeKey: 'font', 
      // ^?
    }),
  ],
})

presetLegacyCompat

presetWind4では、より良い色のコントラストと色の知覚をサポートするためにoklchカラーモデルを使用しています。そのため、presetLegacyCompatと互換性がなく、一緒に使用することは推奨されません

詳細については互換性セクションを参照してください。

transformDirectives

transformDirectivesPresetWind4と上手く動作しません。いくつかの既知の問題があるため、注意して使用してください。

WARNING

  • When using @apply to process rules that have @property, conflicts may occur between different layer levels.

Released under the MIT License.