CSS3 Transition: Transition différente pour * IN * et * OUT * (ou revenant de l'état de transition)
Question d'origine... mise à jour de code de travail ci-dessous:
J'ai un chargement de l'image qui apparaît lors d'une requête ajax charge de l'événement. L'image affiche/masque en ajoutant ou en supprimant un "chargement" de la classe de l'élément body. Actuellement, le chargement d'image anime fond de taille de 0 à 100%, et disparaît dans l'opacité (et vice-versa pour le "retour" de transition).
Ce que je veux accomplir, cependant, est d'avoir en arrière-plan, la taille de la transition se produire instantanément (pas de transition) sur le fade out, donc:
- Fade in: l'opacité de 0 à 1 .2s, arrière-plan taille de 0 à 100%.2s
- Fade out: l'opacité de 1 à 0 .2s, arrière-plan de la taille de 100% à 0 devrait arriver instantanément
#loader { width: 100%; height: 100%; position: fixed; top: 0; left: 0; z-index: -1; opacity: 0; -moz-opacity: 0; transition: all .2s ease-in-out } #loader .image { width: 400px; height: 138px; display: block; position: absolute; z-index: 2000; top: 50%; left: 50%; margin: 0; background: url(assets/images/loading.png) no-repeat; background-size: 0 0; transition: all .2s ease-in-out; -webkit-animation: pulse 400ms ease-out infinite alternate; -moz-animation: pulse 400ms ease-out infinite alternate; -o-animation: pulse 400ms ease-out infinite alternate; animation: pulse 400ms ease-out infinite alternate } .loading #loader {z-index: 1000; background-color: rgba(255,255,255,.7)} .loading #loader .image { background-size: 100% 100%; margin: -69px 0 0 -200px; transition: opacity .2s ease-in-out }
J'ai changé de transition de la propriété de ce sélecteur .loading #loader .image
à "l'opacité" plutôt que de "tous", mais il remplit toujours en arrière-plan, la taille de la transition.
Personne ne sait comment atteindre les différentes fade in et fade out transitions décrites ci-dessus avec css3? Merci!
Mise À Jour Du Code Qui Fonctionne
La question était de casser les propriétés individuelles (marge, arrière-plan) dans une liste séparée par des virgules. Je crois que l'aide à la transition: tout va vous empêcher d'être en mesure d'effectuer différents DANS et HORS transitions.
#loader {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
z-index: -1;
opacity: 0;
-moz-opacity: 0;
.transition(opacity,.4s);
}
#loader .image {
width: 400px;
height: 138px;
display: block;
position: absolute;
z-index: 2000;
top: 50%;
left: 50%;
margin: 0;
background: url(assets/images/loading.png) no-repeat;
background-size: 0 0;
-webkit-transition: margin .4s ease-in-out;
-moz-transition: margin .4s ease-in-out;
-o-transition: margin .4s ease-in-out;
-ms-transition: margin .4s ease-in-out;
transition: margin .4s ease-in-out;
-webkit-animation: pulse 400ms ease-out infinite alternate;
-moz-animation: pulse 400ms ease-out infinite alternate;
-o-animation: pulse 400ms ease-out infinite alternate;
animation: pulse 400ms ease-out infinite alternate
}
.loading #loader {z-index: 1000; background-color: rgba(255,255,255,.7)}
.loading #loader .image {
background-size: 100% 100%;
margin: -69px 0 0 -200px;
-webkit-transition: background .4s ease-in-out, margin .4s ease-in-out;
-moz-transition: background .4s ease-in-out, margin .4s ease-in-out;
-o-transition: background .4s ease-in-out, margin .4s ease-in-out;
-ms-transition: background .4s ease-in-out, margin .4s ease-in-out;
transition: background .4s ease-in-out, margin .4s ease-in-out;
}
source d'informationauteur j-man86 | 2012-01-20
Vous devez vous connecter pour publier un commentaire.
Ici est simplifié cas de test:
Remarquez comment le
opacity
s'estompe le même, mais labackground
seulement fondus dans, et se met immédiatement en bleu sur fade out.J'ai utilisé
:hover
comme un exemple, mais il devrait fonctionner de la même lors de l'ajout et de la suppression des classes avec JavaScript.Démo
Si vous voulez un exemple plus spécifique, veuillez fournir une réduit de cas de test sur dabblet ou Jsfiddle.