Skip to main content

@Property | CSS

  • @Property | CSS

🧠 O que é o @property

Normalmente, quando você usa variáveis CSS (as famosas custom properties), você faz algo assim:

:root {
--minha-cor: red;
}

Mas o navegador não sabe o tipo dessa variável — é só um texto. Então, não dá pra animar, interpolar ou validar valores.

👉 @property muda isso: ele registra a variável oficialmente, com tipo, valor inicial e herança.


⚙️ Sintaxe

@property --nome-da-propriedade {
syntax: '<tipo>';
inherits: true | false;
initial-value: <valor>;
}
CampoO que faz
syntax:Define o tipo de valor esperado (ex: <color>, <length>, <number>, etc.)
inherits:Diz se o valor é herdado para elementos filhos
initial-value:Valor padrão se nenhum for definido

💡 Exemplo simples

@property --minha-cor {
syntax: '<color>';
inherits: false;
initial-value: red;
}

.caixa {
background-color: var(--minha-cor);
transition: --minha-cor 1s; /* 👈 Isso só funciona porque usamos @property */
}

.caixa:hover {
--minha-cor: blue;
}

➡️ Resultado: Quando você passa o mouse, a cor muda com transição suave entre red → blue.

Sem @property, o navegador não saberia como animar a variável.


🔢 Exemplo com número

@property --espaco {
syntax: '<length>';
inherits: false;
initial-value: 10px;
}

.box {
padding: var(--espaco);
transition: --espaco 0.3s ease;
}

.box:hover {
--espaco: 40px;
}

➡️ Aqui, o padding cresce suavemente de 10px para 40px ao passar o mouse.


🧠 Tipos aceitos em syntax

TipoExemploDescrição
<color>red, #fff, rgb(0,0,0)Cor
<length>10px, 2remTamanho
<number>1, 3.14Números
<angle>45degÂngulos
<percentage>50%Percentuais
<transform-list>rotate(30deg)Transformações

🎨 Exemplo prático com animação

<style>
@property --angulo {
syntax: '<angle>';
inherits: false;
initial-value: 0deg;
}

.loader {
width: 100px;
height: 100px;
border: 6px solid transparent;
border-top-color: blue;
border-radius: 50%;
animation: girar 2s linear infinite;
}

@keyframes girar {
to {
--angulo: 360deg;
transform: rotate(var(--angulo));
}
}
</style>

<div class="loader"></div>

🌀 Aqui, a variável --angulo é registrada e animada suavemente graças ao @property.


⚙️ Compatibilidade

  • ✅ Chrome / Edge / Opera: suportam bem
  • ⚠️ Safari: suporte parcial (depende da versão)
  • ⚠️ Firefox: ainda experimental (precisa ativar flag)

✅ Resumo

ConceitoExplicação
@propertyRegistra uma variável CSS “com tipo”
PermiteAnimação, transição e validação de variáveis
Campossyntax, inherits, initial-value
VantagemFaz as variáveis CSS se comportarem como propriedades nativas
SuporteNavegadores modernos (principalmente Chromium)