*
(caractère générique) void
et montrons comment ces états spéciaux sont utilisés pour
les éléments entrant et sortant d'une vue. Le chapitre explore également plusieurs déclencheurs d'animation, rappels d'animation et animations basées sur des séquences à l'aide d'images clés.
Angular
, les états de transition peuvent être définis explicitement par le biais de la fonction state()
,
ou en utilisant le prédéfini *
(caractère générique) et les états void
.
*
ou un caractère générique correspond à tout état d'animation.
Cela est utile pour définir les transitions qui s'appliquent indépendamment de l'état de début ou de fin de l'élément HTML
.open => *
s'applique lorsque l'état de l'élément passe de ouvert à autre chose.open
et closed
.
Au lieu de définir chaque paire de transition d'état à état, nous affirmons maintenant que toute transition vers closed
prend 1 seconde et que toute transition vers openprend 0,5 seconde.open
et closed
.
Les états génériques sont préférables lorsqu'un élément dans un état particulier a plusieurs états potentiels vers lesquels il peut être modifié.
Si notre bouton peut changer de l'un open
à l'autre closed
ou quelque chose comme inProgress
,
l'utilisation d'un état générique pourrait réduire la quantité de codage nécessaire.
* => *
transition s'applique lorsqu'un changement entre deux états a lieu.* => *
(indifférente).
Par exemple, définissez des modifications de style ou des animations s'appliquant uniquement à open => closed
,
ou uniquement à closed => open
, puis utilisez-les * => *
comme solution de secours pour les paires
d'états qui ne sont autrement pas appelées.* => *
.*
avec un style
pour indiquer à l'animation d'utiliser quelle que soit la valeur du style
actuel et animez-la.
Le caractère générique est une valeur de secours utilisée si l'état en cours d'animation n'est pas déclaré dans le déclencheur.
void
pour configurer des transitions pour un élément entrant ou sortant d'une page.
Voir Animer entrer et sortir d'une vue.* => void
s'applique lorsque l'élément quitte une vue, quel que soit l'état dans lequel il se trouvait avant de quitter.void => *
s'applique lorsque l'élément entre dans une vue, quel que soit l'état dans lequel il se positionne.*
correspond à n'importe quel état, y compris void
.DOM
.void
lorsque l'élément HTML
n'est pas attaché à une vue.:enter
et :leave
sont des alias pour les transitions void => *
et * => void
.
Ces alias sont utilisés par plusieurs fonctions d'animation.
DOM
.
Utilisez donc les alias :enter
et :leave
ciblez les éléments HTML
insérés ou supprimés d'une vue.
:enter
s'exécute lorsque des *ngIf
ou des *ngFor
sont placées sur la page, et :leave
lorsque ces vues sont supprimées de la page.myInsertRemoveTrigger
.
Le modèle HTML
contient le code suivant.:enter
définit une opacité initiale de 0,
puis l'anime pour modifier cette opacité en 1 lorsque l'élément est inséré dans la vue.state()
.transition()
prend des valeurs de sélecteur supplémentaires, :increment
et :decrement
.
Utilisez-les pour lancer une transition lorsqu'une valeur numérique a augmenté ou diminué.
transition()
qui compare true et false, ou 1 et 0.HTML
lie un élément ‹div› à un déclencheur nommé openClose
avec une expression
d'état de isOpen
et avec les valeurs possibles de true
et false
.
Ceci est une alternative à la pratique qui consiste à créer deux états nommés open
et close
.@Componentanimations
sous la propriété animations:, lorsque l'état est évalué à true
("open" ici),
la hauteur de l'élément HTML
associé est un style générique ou par défaut.
Dans ce cas, utilisez la hauteur que l'élément avait déjà avant le début de l'animation.
Lorsque l'élément est "Closed"
, l'élément s'anime à une hauteur de 0, ce qui le rend invisible.Angular
, l'animation parent est toujours prioritaire
et les animations enfants sont bloquées. Pour qu'une animation enfant puisse s'exécuter, l'animation
parent doit interroger chacun des éléments contenant des animations enfant, puis autoriser
l'exécution des animations à l'aide de la fonction animateChild()
.@.disabled
peut être placée sur un élément HTML
pour désactiver les animations sur cet élément, ainsi que sur les éléments imbriqués.
Lorsque la valeur est true, la liaison @.disabled
empêche le rendu de toutes les animations.src/app/open-close.component.html
src/app/open-close.component.ts
@.disabledliaison
est vraie, le déclencheur @childAnimation
ne démarre pas.HTML
a des animations désactivées à l'aide de la @.disabledliaison
hôte,
les animations sont également désactivées sur tous les éléments internes.
Vous ne pouvez pas désactiver sélectivement plusieurs animations sur un seul élément.query()
pour collecter des éléments internes situés dans des zones désactivées du modèle HTML
.
Ces éléments peuvent encore animer.
animateChild()
.Angular
, placez la liaison @.disabled
hôte sur le composant Angular
le plus élevé.src/app/app.component.ts
trigger()
d'animation émet des rappels quand elle commence et quand elle se termine.
Dans l'exemple ci-dessous, nous avons un composant qui contient un déclencheur openClose
.HTML
, l'événement d'animation est renvoyé via $event
,
en tant @trigger.start
que @trigger.done
, où trigger
est le nom du déclencheur utilisé.
Dans notre exemple, le déclencheur openClose
apparaît comme suit.API
lent, tel qu'une recherche dans une base de données.
Par exemple, vous pouvez configurer le bouton InProgress
pour qu'il ait sa propre animation en boucle où il pulsera ou effectuera un autre mouvement
visuel pendant la fin de l'opération du système dorsal.inProgress
à l'état closed
au terme duquel l'appel de l'API
est terminé.console.warn()
pour afficher la progression de l'application dans la console JavaScript
du développeur.
L'extrait de code suivant crée une sortie du journal de la console pour notre exemple d'origine, un bouton avec les deux états de open
et closed
.keyframe()
Angular
est similaire aux images clés en CSS
.
Les images clés permettent plusieurs changements de style au sein d'un même segment de minutage.
Par exemple, notre bouton, au lieu d'être atténué, peut changer de couleur plusieurs fois en une période de 2 secondes.delay
et easing
au sein d'une seule animation.Angular
s'appuyant sur les animations Web, vous pouvez animer n'importe quelle propriété que le navigateur considère comme animable.
Cela inclut les positions, les tailles, les transformations, les couleurs, les bordures, etc. Le W3C
gère une liste de propriétés pouvant être animées sur sa page de transitions CSS
.Angular
suppose une unité par défaut de pixels, ou px.
Exprimer 50 pixels 50est la même chose que dire '50px'.
CSS
.*
valeur de propriété générique spéciale sous style()
, de sorte que la valeur de
cette propriété de style particulière soit calculée au moment de l'exécution, puis insérée dans l'animation.shrinkOut
, utilisé lorsqu'un élément HTML
quitte la page.
L'animation prend la hauteur que l'élément a avant de partir et s'anime de cette hauteur à zéro.