Skip to content

Capas

El orden del CSS afectará sus prioridades. Aunque el motor mantendrá el orden de las reglas, a veces puedes querer agrupar algunas utilidades para tener control explícito de su orden.

Uso

A diferencia de Tailwind CSS que ofrece tres capas fijas (base, components, utilities), UnoCSS te permite definir las capas como quieras. Para establecer la capa, puedes pasar los metadatos como el tercer elemento de tus reglas:

ts
rules: [
  [/^m-(\d)$/, ([, d]) => ({ margin: `${d / 4}rem` }), { layer: 'utilities' }],
  // cuando omites la capa, será `default`
  ['btn', { padding: '4px' }],
]

Esto generará:

css
/* layer: default */
.btn { padding: 4px; }
/* layer: utilities */
.m-2 { margin: 0.5rem; }

La capa también se puede establecer en cada preflight:

ts
preflights: [
  {
    layer: 'my-layer',
    getCSS: async () => (await fetch('my-style.css')).text(),
  },
]

Ordenamiento

Puedes controlar el orden de las capas por:

ts
layers: {
  'components': -1,
  'default': 1,
  'utilities': 2,
  'my-layer': 3,
}

Las capas sin orden especificado se ordenarán alfabéticamente.

Cuando quieras tener tu CSS personalizado entre capas, puedes actualizar tu módulo de entrada:

ts
// 'uno:[layer-name].css'
import 'uno:components.css'

// las capas que no son 'components' y 'utilities' caerán aquí
import 'uno.css'

// tu propio CSS
import './my-custom.css'

// la capa "utilities" tendrá la prioridad más alta
import 'uno:utilities.css'

Capas CSS Cascade

Puedes generar Capas CSS Cascade por:

ts
outputToCssLayers: true

Puedes cambiar los nombres de las Capas CSS con:

ts
outputToCssLayers: {
  cssLayerName: (layer) => {
    // La capa por defecto se generará en la capa CSS "utilities".
    if (layer === 'default')
      return 'utilities'

    // La capa de atajos se generará en la subcapa "shortcuts" de la capa CSS "utilities".
    if (layer === 'shortcuts')
      return 'utilities.shortcuts'

    // Todas las demás capas simplemente usarán su nombre como el nombre de la capa CSS.
  }
}

Capas usando variantes

Las capas se pueden crear usando variantes.

uno-layer-<name>: se puede usar para crear una capa UnoCSS.

html
<p class="uno-layer-my-layer:text-xl">texto</p>
css
/* layer: my-layer */
.uno-layer-my-layer\:text-xl{ font-size:1.25rem; line-height:1.75rem; }

layer-<name>: se puede usar para crear una @layer CSS.

html
<p class="layer-my-layer:text-xl">texto</p>
css
/* layer: default */
@layer my-layer{ .layer-my-layer\:text-xl{ font-size:1.25rem; line-height:1.75rem; } }

Released under the MIT License.