CSS proměnné (Custom Properties) samotné nemůžou být přímo animované, protože CSS engine původně nevěděl, jaký typ hodnoty proměnná obsahuje. Proto byla představena @property, která přesně definuje typ hodnoty a umožňuje tak animaci.
Klíčové důvody proč původní CSS proměnné nejdou animovat:
Typová bezpečnost - běžná CSS proměnná nemá definovaný typ, takže engine neví jak interpolovat hodnoty mezi stavy
CSS proměnné jsou považovány za textové řetězce, ne za konkrétní CSS hodnoty
@property řeší tyto problémy tím, že:
Definuje přesný typ hodnoty (syntax)
Určuje výchozí hodnotu (initial-value)
Specifikuje zda se hodnota dědí (inherits)
Více informací najdete zde:
Specifikace Houdini API: https://drafts.css-houdini.org/css-properties-values-api/
MDN dokumentace: https://developer.mozilla.org/en-US/docs/Web/CSS/@property
Podporu v prohlížečích můžete zkontrolovat na:
https://caniuse.com/css-property-rule
Pro animování úhlů je tedy nutné použít @property --angle jak máte v kódu, protože tím explicitně říkáte, že hodnota je typu <angle> a může být animována mezi dvěma úhly.
Existují alternativní přístupy pro starší prohlížeče, například:
Použití transform: rotate() místo CSS proměnné
Animování pomocí JavaScript
Využití preprocessorů jako SASS