Tilbage til UI-animation

3. semester / Tema 13C: Frontend Design

UI-animation: @property i praksis

Brug typed custom properties til interpolation, sikrere defaults og mere fleksible animationer.

Se undervisningsslides

Relevante links

Hvorfor er @property nyttig?

Normale custom properties er simple tekststrenge. Browseren ved ikke af sig selv, om --offset er en længde, en farve, en procent eller noget helt fjerde. Derfor kan den heller ikke altid interpolere værdien glidende i en transition eller animation.

@property løser det ved at registrere en custom property med type, default-værdi og arveadfærd. Det gør især tre ting nyttige i animation:

Syntaksen er som følger:

@property --my-property {
syntax: "<length>"; /* eller <color>, <percentage>, etc. */
initial-value: 0px; /* eller en anden passende default */
inherits: true; /* eller false, alt efter behov */
}

Fra rå variabel til animerbar længde

I denne øvelse registreres --offset som en <length>. Det gør, at den kan tweenes glidende og bruges direkte i translate.

Pointen er, at @property ikke bare er “syntaks ovenpå” custom properties. Det er det, der gør browseren i stand til at forstå og animere værdien som en rigtig længde.

Gradienter er et godt sted at mærke forskellen

Typed custom properties er især nyttige i gradients, fordi stop, vinkler og farver ellers hurtigt bliver meget “streng-baserede”.

Her bruges en typed procentværdi til at styre et gradient-stop:

Og her bruges typed værdier som del af et mere deklarativt gradient-switch, hvor én prop styrer, hvor skiftet ligger:

Et praktisk tip er at sætte inherits: false, når en property kun skal gælde lokalt i komponenten og ikke sive ned gennem hele subtree’et.