7 Transition & animation
7 Transition & animation
7 Transition & animation
Arrière-plan : image nabeul.jpg avec une taille (100% , 3Ovh) Type de bordure :outset
Le titre de l’entête : marge intérieure haut 5%, couleur beige , opacité 0.6 , police courier new , ombre (1px 1px
2px black)
Le main : display flex , marges gauche et droite 10%
Navigation : couleur d’arrière-plan blanc , Type de bordure : outset ,largeur 20%
Les éléments de la liste : pas de style
Les liens de menu navigation : display block , couleur d’arrière-plan bleu, pas de soulignement, couleur blanc,style
gras , lageur 60% , marge haut 3% , marges intérieures 3%
Section : couleur d’arrière-plan blanc, Type de bordure : outset, largeur 60%, marge intérieure gauche 1%
Paragraphes : police Georgia, 'Times New Roman', Times, serif ; taille 1.1em
Paragraphe :
p{
animation-duration: 3s;
animation-name: slidein;
}
@keyframes slidein
{ from { margin-left:
100%; width: 300%;
} to { margin-
left: 0%; width: 100%;
5- Ajouter une animation pour le pied de page qui dure 20 secondes et qui se passe sur 5 étapes où à
chaque étape la couleur change.
Animations
22
Html 5 et Css3 3STI
On utilise :
animation-name : pour désigner l’animation utilisée. (obligatoire)
animation-duration : pour définir la durée de l’animation (par défaut elle est de 0 seconde).
(obligatoire)
2. Plusieurs étapes :
L’intérêt des animations est de pouvoir gérer des étapes intermédiaires. Voici une nouvelle version de
l’animation :
@keyframes taille {
0% {width: 0px;}
50% {width: 300px;}
100% {width: 200px;}
}
On a 3 étapes :
le départ (0%) avec une largeur de 0px
la moitié (50%) avec une largeur de 300px
l’arrivée (100%) avec une largeur de 200px
3. Plusieurs propriétés :
23
Html 5 et Css3 3STI
On peut aussi changer plusieurs propriétés :
@keyframes taille {
0% {width: 0px; background-color: red;}
25% {width: 50px; background-color: yellow;}
50% {width: 100px; background-color: green;}
75% {width: 150px; background-color: pink;}
/* 100% {width: 200px; background-color: blue;} devient facultatif car
l'état 100% est déjà l'état du div "final".*/
}
4. Démarrage différé :
Dans les exemples ci-dessus, l’animation commence dès le chargement, ce qui n’est pas toujours
souhaitable. On dispose de la propriété animation-delay pour différer le départ de la durée voulue.
En poursuivant notre exemple ça pourrait donner ce code :
div {
animation-name: taille;
height: 100px;
width: 200px;
background-color: blue;
animation-duration: 4s;
animation-delay: 2s;
}
5. Nombre d’exécutions :
Par défaut, une animation est exécutée une seule fois, si on en veut plus, il faut utiliser la
propriété animation-iteration-count. Toujours avec notre exemple :
div {
animation-name: taille;
height: 100px;
width: 200px;
background-color: blue;
animation-duration: 4s;
animation-iteration-count: 2;
}
Rque :
Si on veut un nombre d’exécutions infini, au lieu de mettre une valeur on utilisera infinite.
6. Sens de l’animation :
Par défaut une animation va dans le sens normal mais on peut aussi l’obliger à aller dans l’autre sens en
utilisant la propriété animation-direction. On dispose de deux valeurs :
reverse : on va dans le sens inverse.
alternate : on alterne d’un sens à l’autre (dans ce cas évidemment il faut prévoir au moins deux
exécutions).
24
Html 5 et Css3 3STI
div {
height: 100px;
width: 200px;
background-color: blue;
animation-name: taille;
animation-duration: 4s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
7. Progression de l’animation :
On peut modifier l’animation avec la propriété animation-timing-function et ces valeurs :
ease : début rapide, puis ça accélère, puis ça ralentit à la fin (c’est l’effet par défaut).
linear : même vitesse du début à la fin.
ease-in : début lent.
ease-out : fin lente.
ease-in-out : début et fin lents.
Au départ et pendant le délai de démarrage, la largeur sera de 0px qui correspond à la première étape (à
0%) parce qu’on a utilisé la valeur backwards pour animation-fill-mode.
9. Action sur une animation :
Pour l’instant nous n’avons pas vu de possibilité d’intervention sur une animation. On dispose de la
propriété animation-play-state qui permet une interaction avec ces valeurs :
running : valeur par défaut de l’animation en action.
paused : animation en pause.
Transitions
26
Html 5 et Css3 3STI
Les transitions permettent de passer d'un affichage à un autre pour un même objet, d'un contenu à un
autre, de façon progressive.
1. Syntaxe de la propriété :
transition-property :
Indique à quelle propriété on fournit une transition. Par défaut all, c’est-à-dire toutes les propriétés.
Par exemple pour changer la couleur progressivement :
transition-property:color;
transition-duration :
Définit la durée totale du temps de la transition. Par défaut la valeur est 0, il n'y a aucune transition.
Exemple, pour une durée d'une demi-seconde :
transition-duration:0.5s;
transition-timing-function :
Définit la forme de la progression dans le temps, avec des accélérations possibles durant la transition.
Liste des valeurs possibles:
- ease: Par défaut, Cela donne un départ et une arrivée ralentis.
- linear: Une fonction linéraire,
- ease-in: Départ ralenti.
- ease-out: Arrivée ralentie.
- ease-in-out: Départ et arrivée ralentis.
transition-delay
Indique à quel moment démarre la transition (par rapport à l'évènement qui la déclenche).
Par exemple pour un délai de réaction d'une seconde :
transition-delay: 1s;
2. Transition :
Les quatre propriétés peuvent être réduites à une seule.
On place dans l'ordre : transition-property, transition-duration, transition-timing-function, transition-
delay. Pas de virgules pour séparer les valeurs, comme usuel.
transition: all 2s ease 0;
27
Html 5 et Css3 3STI
Les propriétés élémentaires comme la forme compacte peuvent comporter des listes séparées par une
virgule :
transition-property:color,top;
transition-duraction:1s, 5s;
Les éléments des listes sont associés par leur position dans la liste. Une durée d'une seconde est
attribuée à la propriété color, une durée de 5 secondes à la propriété top.
4. Exemple :
Page.html :
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="tr2.css">
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div>3SI</div>
</body>
</html>
tr2.css :
div{
color: white;
background-color: red;
width: 300px;
height: 300px;
text-align: center;
position: relative;
top: 0;
left: 0;
transition:left,border-radius 5s,10s ;
}
div:hover{
left:1000px;
border-radius: 50%;
}
28