Timp de decenii, una dintre cele mai frustrante limitări din CSS a fost imposibilitatea de a anima un element care trece din starea display: none în display: block. Pentru a crea un meniu sau un dialog care apare lin (fade-in), dezvoltatorii trebuiau să recurgă la trucuri cu setTimeout în JavaScript sau să manipuleze clase intermediare.
Noua regulă @starting-style permite definirea stării inițiale (starea „înainte de afișare”) de la care browserul va porni tranziția în momentul în care elementul devine vizibil pentru prima dată în fluxul de randare.
/* 1. Starea activă a dialogului când este deschis */
dialog[open] {
opacity: 1;
transform: scale(1);
/* Activează tranziția pe proprietățile de opacitate, transformare și display */
transition: opacity 0.3s ease, transform 0.3s ease, display 0.3s allow-discrete;
}
/* 2. Starea de plecare când elementul trece din 'închis' în 'deschis' */
@starting-style {
dialog[open] {
opacity: 0;
transform: scale(0.9);
}
}
/* 3. Starea de ieșire la închidere */
dialog {
opacity: 0;
transform: scale(0.9);
transition: opacity 0.3s ease, transform 0.3s ease, display 0.3s allow-discrete;
}
Cuvântul cheie allow-discrete
Pentru a permite animarea proprietăților discrete (precum display sau visibility), trebuie să adaugi valoarea allow-discrete în declarația transition. Aceasta îi transmite browserului să comute valoarea lui display: none abia după ce animația vizuală s-a încheiat complet.
Întrebări & Exemple de Cod:
@starting-style (Animații de Intrare din display: none)Ai o nelămurire despre utilizarea comenzii
@starting-style (Animații de Intrare din display: none)sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.