Skip to content

Wind3 preset

Tailwind CSS / Windi CSS kompaktný preset pre UnoCSS.

Zdrojový kód

INFO

@unocss/preset-wind a @unocss/preset-uno sú zastarané a premenované na @unocss/preset-wind3. Tento preset dedí z @unocss/preset-mini.

Inštalácia

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

export default defineConfig({
  presets: [
    presetWind3(),
  ],
})

TIP

Tento preset je zahrnutý v balíku unocss, môžete ho tiež importovať odtiaľ:

ts
import { presetWind3 } from 'unocss'

Pravidlá

Hlavným cieľom tohto presetu je poskytnúť kompatibilitu s Tailwind CSS a Windi CSS. Je potrebné poznamenať, že úplná kompatibilita nemusí byť zaručená. Podrobné použitie nájdete v ich dokumentácii.

Pre všetky pravidlá a presety zahrnuté v tomto presete si pozrite naše interaktívne dokumenty alebo priamo prejdite na zdrojový kód.

Funkcie

Dark mode

Predvolene tento preset generuje class-based dark mode s variantom dark:.

html
<div class="dark:bg-red:10" />

vygeneruje:

css
.dark .dark\:bg-red\:10 {
  background-color: rgb(248 113 113 / 0.1);
}

Dark mode založený na media query

Na použitie dark mode založeného na media query globálne môžete zmeniť konfiguráciu pre variant dark::

ts
presetWind3({
  dark: 'media'
})

Teraz

html
<div class="dark:bg-red:10" />

vygeneruje:

css
@media (prefers-color-scheme: dark) {
  .dark\:bg-red\:10 {
    background-color: rgb(248 113 113 / 0.1);
  }
}

Voliteľný dark mode založený na media query

Na použitie voliteľného dark mode založeného na media query môžete použiť variant @dark::

html
<div class="@dark:bg-red:10" />
css
@media (prefers-color-scheme: dark) {
  .\@dark\:bg-red\:10 {
    background-color: rgb(248 113 113 / 0.1);
  }
}

Rozdiely oproti Tailwind CSS

Úvodzovky

Používanie úvodzoviek v šablóne (súbory určené na spracovanie) nie je podporované kvôli spôsobu, akým funguje extractor. Napríklad nebudete môcť napísať before:content-['']. Pre tieto prípady môže byť vhodnejšie zaviesť novú utilitu, ktorú môžete explicitne nastaviť, ako napríklad class="before:content-empty".

background-position s ľubovoľnými hodnotami

Tailwind umožňuje používať vlastné hodnoty pre background-position pomocou holého zápisu:

html
<div class="bg-[center_top_1rem]"></div>

Wind preset namiesto toho interpretuje center_top_1rem ako farbu. Na dosiahnutie rovnakého výsledku použite prefix position::

html
<div class="bg-[position:center_top_1rem]"></div>

Animácie

Tailwind CSS má menej vstavaných animácií, plne podporujeme jeho pravidlá animácií a interne integrujeme Animate.css na poskytnutie ďalších efektov animácií.

Môžete použiť prefix animate- na rýchle vedenie IntelliSense k nájdeniu potrebnej animácie.

TIP

Nezlučujeme konfliktné názvy animácií z Tailwind a Animate.css. Ak potrebujete použiť názov animácie z Animate.css, použite animate-<name>-alt.

Napríklad

Tailwind CSSAnimate.css
animate-bounceanimate-bounce-alt

Ak chcete prispôsobiť alebo upraviť efekt animácie, poskytujeme vysoko prispôsobiteľné konfiguračné položky. Môžete upraviť trvanie, oneskorenie, krivku rýchlosti atď. animácie pomocou konfiguračnej položky.

ts
export default defineConfig({
  theme: {
    animation: {
      keyframes: {
        custom: '{0%, 100% { transform: scale(0.5); } 50% { transform: scale(1); }}',
      },
      durations: {
        custom: '1s',
      },
      timingFns: {
        custom: 'cubic-bezier(0.4,0,.6,1)',
      },
      properties: {
        custom: { 'transform-origin': 'center' },
      },
      counts: {
        custom: 'infinite',
      },
    }
  }
})

Náhľad vlastnej animácie:

animate-custom

TIP

Môžete tiež pridať category na zoskupenie animácií pre lepšiu správu. To uľahčí downstream nástrojom konzumovať efekty animácií.

ts
export default defineConfig({
  theme: {
    animation: {
      keyframes: {
        custom: '{0%, 100% { transform: scale(0.5); } 50% { transform: scale(1); }}',
      },
      // ...
      category: {
        custom: 'Zooming',
      },
    }
  }
})

Rozdiely oproti Windi CSS

Breakpointy

Windi CSSUnoCSS
<sm:p-1lt-sm:p-1
@lg:p-1at-lg:p-1
>xl:p-1xl:p-1

Medzery v zátvorkovej syntaxi

Tento preset používa _ namiesto , na rešpektovanie medzier v zátvorkovej syntaxi.

Windi CSSUnoCSS
grid-cols-[1fr,10px,max-content]grid-cols-[1fr_10px_max-content]

Keďže niektoré pravidlá CSS vyžadujú , ako súčasť hodnoty, napr. grid-cols-[repeat(3,auto)]

Experimentálne funkcie

WARNING

Tento preset obsahuje experimentálne funkcie, ktoré môžu byť kedykoľvek zmenené spôsobom, ktorý nie je spätne kompatibilný.

Media Hover

Media hover rieši problém sticky hover, kde klepnutie na cieľ, ktorý obsahuje štýl hover na mobile, pretrváva tento štýl hover až do klepnutia inde.

Keďže bežný štýl :hover sa pravdepodobne používa tak široko, variant používa syntax @hover na odlíšenie od bežného pseudo hover.

Variant @hover-text-red vygeneruje:

css
@media (hover: hover) and (pointer: fine) {
  .\@hover-text-red:hover {
    --un-text-opacity: 1;
    color: rgb(248 113 113 / var(--un-text-opacity));
  }
}

Možnosti

INFO

Možnosti tohto presetu sú dedené z @unocss/preset-mini.

important

  • Type: boolean | string
  • Default: false

Možnosť important vám umožňuje ovládať, či majú byť utility UnoCSS označené ako !important. Toto môže byť veľmi užitočné pri používaní UnoCSS s existujúcim CSS, ktoré má vysoko špecifické selektory.

WARNING

Použitie tejto možnosti aplikuje important na všetky utility generované UnoCSS. Ak ich chcete aplikovať iba na konkrétne utility, môžete namiesto toho použiť variant important:.

Avšak nastavenie important na true môže spôsobiť niektoré problémy pri začleňovaní third party JS knižníc, ktoré pridávajú inline štýly do vašich prvkov. V týchto prípadoch utility !important od UnoCSS porážajú inline štýly, čo môže narušiť váš zamýšľaný dizajn.

Aby ste sa tomu vyhli, môžete nastaviť important na ID selektor ako #app:

ts
import presetWind3 from '@unocss/preset-wind'
import { defineConfig } from 'unocss'

export default defineConfig({
  presets: [
    presetWind3({
      important: '#app',
    }),
  ],
})

Táto konfigurácia bude prefixovať všetky vaše utility daným selektorom, čím efektívne zvýši ich špecifickosť bez toho, aby ich skutočne urobila !important.

Utility dark:bg-blue vygeneruje:

css
#app :is(.dark .dark\:bg-blue) {
  --un-bg-opacity: 1;
  background-color: rgb(96 165 250 / var(--un-bg-opacity));
}

Released under the MIT License.