Skip to content

Wat is UnoCSS? ​

UnoCSS is de instant atomaire CSS engine, ontworpen om flexibel en uitbreidbaar te zijn. De core is on-opinionated en alle CSS utilities worden geleverd via presets.

Bijvoorbeeld, je zou je aangepaste CSS utilities kunnen definiëren, door regels te leveren in je lokale configuratie bestand.

ts
import { defineConfig } from 'unocss'

export default defineConfig({
  rules: [
    ['m-1', { margin: '1px' }],
  ],
})

Dit zal een nieuwe CSS utility m-1 toevoegen aan je project. Omdat UnoCSS on-demand is, zal het niets doen tot je het gebruikt in je codebase. Dus laten we zeggen dat we een component hebben zoals dit:

html
<div class="m-1">Hallo</div>

m-1 zal worden gedetecteerd en de volgende CSS zal worden gegenereerd:

css
.m-1 { margin: 1px; }

Om het flexibeler te maken, kun je je regel dynamisch maken door het eerste argument van de regel (we noemen het matcher) te veranderen naar een RegExp, en de body naar een functie, bijvoorbeeld:

diff
export default defineConfig({
  rules: [
-    ['m-1', { margin: '1px' }],
+    [/^m-([\.\d]+)$/, ([_, num]) => ({ margin: `${num}px` })],
  ],
})

Door dit te doen, kun je nu willekeurige margin utilities hebben, zoals m-1, m-100 of m-52.43. En opnieuw, UnoCSS genereert ze alleen wanneer je ze gebruikt.

html
<div class="m-100">Hallo</div>
<div class="m-52.43">World</div>

De volgende CSS zal worden gegenereerd:

css
.m-100 { margin: 100px; }
.m-52.43 { margin: 52.43px; }

Presets ​

Zoals je kunt zien, is het definiëren van aangepaste regels vrij eenvoudig. Echter, in de meeste gevallen hoef je je eigen regels niet te definiëren, aangezien UnoCSS wordt geleverd met veel ingebouwde presets:

Je kunt eenvoudig meerdere presets tegelijk gebruiken:

ts
import { defineConfig } from 'unocss'
import presetMini from '@unocss/preset-mini'
import presetAttributify from '@unocss/preset-attributify'

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

Attributify ​

Met attributify preset kun je de prefix van je utilities groupen:

html
<button bg="blue-400 hover:blue-500" text="sm white" font="bold" p="y-2 x-4">
  Knop
</button>

Dit maakt je code schoner en beter leesbaar.

Shortcuts ​

Je kunt ook shortcuts gebruiken om meerdere utilities te combineren:

ts
shortcuts: {
  'btn': 'px-4 py-2 rounded-lg font-semibold transition-colors',
  'btn-blue': 'btn bg-blue-500 text-white hover:bg-blue-600',
}
html
<button class="btn btn-blue">
  Klik mij
</button>

Integraties ​

UnoCSS heeft eersteklas integraties met populaire frameworks en tools:

Zie de integraties pagina voor meer informatie.

Tools ​

UnoCSS wordt ook geleverd met handige tools:

Volgende stappen ​

Released under the MIT License.