Skip to content

Camadas

A ordem do CSS afetará suas prioridades. Embora o motor mantenha a ordem das regras, às vezes você pode querer agrupar alguns utilitários para ter controle explícito de sua ordem.

Uso

Diferentemente do Tailwind CSS, que oferece três camadas fixas (base, components, utilities), o UnoCSS permite definir as camadas como você quiser. Para definir a camada, você pode passar os metadados como o terceiro item de suas regras:

ts
rules: [
  [/^m-(\d)$/, ([, d]) => ({ margin: `${d / 4}rem` }), { layer: 'utilities' }],
  // quando você omite a camada, será `default`
  ['btn', { padding: '4px' }],
]

Isso gerará:

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

A camada também pode ser definida em cada preflight:

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

Ordenação

Você pode controlar a ordem das camadas por:

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

Camadas sem ordem especificada serão classificadas alfabeticamente.

Quando você quiser ter seu CSS personalizado entre camadas, pode atualizar seu módulo de entrada:

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

// camadas que não são 'components' e 'utilities' terão fallback aqui
import 'uno.css'

// seu próprio CSS
import './my-custom.css'

// a camada "utilities" terá a maior prioridade
import 'uno:utilities.css'

Camadas em Cascata CSS

Você pode gerar Camadas em Cascata CSS por:

ts
outputToCssLayers: true

Você pode alterar os nomes das Camadas CSS com:

ts
outputToCssLayers: {
  cssLayerName: (layer) => {
    // A camada padrão será gerada na camada CSS "utilities".
    if (layer === 'default')
      return 'utilities'

    // A camada de atalhos será gerada na subcamada "shortcuts" da camada CSS "utilities".
    if (layer === 'shortcuts')
      return 'utilities.shortcuts'

    // Todas as outras camadas usarão simplesmente seu nome como o nome da camada CSS.
  }
}

Camadas usando variantes

Camadas podem ser criadas usando variantes.

uno-layer-<n>: pode ser usado para criar uma camada do 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-<n>: pode ser usado para criar uma @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.