Skip to content

Пресет Wind4

Компактный пресет Tailwind4 CSS для UnoCSS. Он совместим со всеми функциями PresetWind3 и расширяет его возможности.

Исходный код

СОВЕТ

Вы можете потратить немного времени на чтение этого документа, чтобы понять изменения

Установка

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
uno.config.ts
ts
import { 
defineConfig
,
presetWind4
} from 'unocss'
export default
defineConfig
({
presets
: [
presetWind4
(),
], })

Совместимость

Обратитесь к странице Tailwind Compatibility, чтобы узнать о поддержке браузеров и совместимости.

Тема

Тема PresetWind4 практически идентична теме PresetWind3, но некоторые ключи темы были скорректированы.

ПРЕДУПРЕЖДЕНИЕ

При переходе на PresetWind4, пожалуйста, сверьтесь с таблицей ниже, чтобы проверить конфигурацию ключей вашей темы и внести соответствующие корректировки.

PresetWind3PresetWind4
fontFamilyfont
fontSizeПеремещено в свойство fontSize внутри text
lineHeightПеремещено в свойство lineHeight внутри text или используйте leading
letterSpacingПеремещено в свойство letterSpacing внутри text или используйте tracking
borderRadiusradius
easingease
breakpointsbreakpoint
verticalBreakpointsverticalBreakpoint
boxShadowshadow
-insetShadow
Свойства размера, такие как width, height, maxWidth, maxHeight, minWidth, minHeightУнифицировано для использования spacing
transitionPropertyproperty
gridAutoColumn, gridAutoRow, gridColumn, gridRow, gridTemplateColumn, gridTemplateRow-
container.maxWidthcontainers.maxWidth
-defaults

Theme.defaults

Theme.defaults — это глобальная конфигурация темы по умолчанию, которая будет применяться к стилям reset или использоваться в качестве значений по умолчанию для определенных правил.

Ниже приведены значения по умолчанию для Theme.defaults, которые вы можете переопределить в своей конфигурации темы.

Нажмите, чтобы просмотреть значения по умолчанию
uno.config.ts
ts
import type { 
Theme
} from '@unocss/preset-wind4/theme'
export const
defaults
:
Theme
['default'] = {
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 мы добавили опцию preflights, чтобы контролировать, включать ли стили пресета.

Опция reset

В PresetWind4 мы приводим стили сброса в соответствие с Tailwind4 и интегрируем их внутри. Вам не нужно устанавливать никаких дополнительных пакетов сброса CSS, таких как @unocss/reset или normalize.css.

main.ts
ts
import '@unocss/reset/tailwind.css'
import '@unocss/reset/tailwind-compat.css'

Вам нужно лишь управлять включением стилей сброса с помощью переключателя:

uno.config.ts
ts
import { 
defineConfig
,
presetWind4
} from 'unocss'
export default
defineConfig
({
presets
: [
presetWind4
({
preflights
: {
reset
: true,
} }), ], })

Тема

Выберите, как генерировать CSS-переменные темы.

Режим

Движок UnoCSS с установленным presetWind4 будет автоматически собирать зависимости от темы при парсинге утилит и генерировать CSS-переменные в конце.

  • true: Генерировать ключи темы полностью.
  • false: Отключить ключи темы. (Не рекомендуется ⚠️)
  • 'on-demand': Генерировать ключи темы только при использовании. -> ✅ (По умолчанию)
uno.config.ts
ts
import { 
defineConfig
,
presetWind4
} from 'unocss'
export default
defineConfig
({
presets
: [
presetWind4
({
preflights
: {
theme
: true,
}, }), ], })
Опция process

И вы можете дополнительно контролировать вывод ваших переменных темы. Например, если вы хотите конвертировать rem в px для переменных темы, мы предоставляем функцию createRemToPxProcessor для обработки ваших переменных темы.

uno.config.ts
ts
import { 
createRemToPxProcessor
} from '@unocss/preset-wind4/utils'
import {
defineConfig
,
presetWind4
} from 'unocss'
export default
defineConfig
({
presets
: [
presetWind4
({
preflights
: {
theme
: {
mode
: 'on-demand', // По умолчанию 'on-demand'
process
:
createRemToPxProcessor
(),
} }, }), ], })

Кстати, если вы хотите использовать пресет presetRemToPx для конвертации rem в px, вам больше не нужно импортировать этот пресет отдельно, так как presetWind4 предоставляет эту функциональность внутри.

uno.config.ts
ts
import { 
createRemToPxProcessor
} from '@unocss/preset-wind4/utils'
import {
defineConfig
,
presetWind4
} from 'unocss'
export default
defineConfig
({
presets
: [
presetWind4
({
preflights
: {
theme
: {
process
:
createRemToPxProcessor
(),
} }, }), ],
postprocess
: [
createRemToPxProcessor
()],
})

Опция property

Управляет генерацией CSS-правил @property в слое properties.

По умолчанию PresetWind4 использует @property для определения пользовательских свойств CSS для лучшей оптимизации браузером. Эти свойства автоматически генерируются на основе использования ваших утилит и оборачиваются в запрос @supports для прогрессивного улучшения.

uno.config.ts
ts
import { 
defineConfig
,
presetWind4
} from 'unocss'
export default
defineConfig
({
presets
: [
presetWind4
({
preflights
: {
property
: true, // включено (по умолчанию) | `false` для отключения
}, }), ], })
Родитель и селектор

Вы можете настроить родительскую обёртку и селектор:

uno.config.ts
ts
import { 
defineConfig
,
presetWind4
} from 'unocss'
export default
defineConfig
({
presets
: [
presetWind4
({
preflights
: {
property
: {
// Пользовательский родительский селектор (например, использовать @layer вместо @supports)
parent
: '@layer custom-properties',
// Пользовательский селектор для применения свойств
selector
: ':where(*, ::before, ::after)',
}, }, }), ], })

Если вам не нужна обёртка @supports и вы хотите, чтобы свойства применялись напрямую:

uno.config.ts
ts
import { 
defineConfig
,
presetWind4
} from 'unocss'
export default
defineConfig
({
presets
: [
presetWind4
({
preflights
: {
property
: {
parent
: false, // Без родительской обёртки
}, }, }), ], })

Вывод по умолчанию:

css
@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or
  ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
  *,
  ::before,
  ::after,
  ::backdrop {
    --un-text-opacity: 100%;
    /* ... */
  }
}

С parent: false:

css
*,
::before,
::after,
::backdrop {
  --un-text-opacity: 100%;
  /* ... */
}

Сгенерированный CSS

В вывод PresetWind4 были добавлены три новых слоя: base, theme и properties.

Имя слояОписаниеПорядок
propertiesCSS-свойства, определённые через @property-200
themeCSS-переменные, связанные с темой-150
baseБазовые стили preflight/reset-100

Слой properties

Мы использовали @property для определения CSS-свойств во многих правилах, чтобы добиться лучшей производительности и меньшего размера.

Например, часто используемые утилиты, такие как text-op-xx, bg-op-xx и так далее.

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

Слой theme

Мы поместили CSS-переменные, связанные с темой, в слой theme, чтобы вам было проще их переопределять и использовать напрямую. Он может быть полным или формироваться по запросу. Данные всегда берутся из вашей конфигурации темы.

ИНФОРМАЦИЯ

Сгенерированные имена ключей могут не полностью совпадать с Tailwind4. Мы стараемся избегать значительных изменений имён ключей в теме из уважения к пользователям, мигрирующим с presetWind3. Вы также можете настроить желаемый вывод в секции preflights.theme.process.

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

Совместимость с другими пресетами

PresetWind4 расширяет и совместим с PresetWind3. Поскольку другие пакеты изначально разрабатывались для PresetWind3, при их совместном использовании могут возникнуть некоторые проблемы. Известные проблемы включают:

presetRemToPx

presetRemToPx больше не требуется в PresetWind4, так как он уже включен внутри. Вы можете удалить его из вашей конфигурации.

См. опцию process в настройках.

presetLegacyCompat

В presetWind4 мы используем цветовую модель oklch для обеспечения лучшего цветового контраста и цветовосприятия. Поэтому он несовместим с presetLegacyCompat, и их совместное использование не рекомендуется.

Пожалуйста, обратитесь к разделу Совместимость для получения дополнительной информации.

Распространяется по лицензии MIT.