domanda originale ... il codice di lavoro aggiornata qui sotto:CSS3 Transition: transizione diversa per * IN * e * OUT * (o di ritorno dallo stato di transizione)
Ho un carico di immagine che viene in su durante un evento di carico ajax. L'immagine mostra/nasconde aggiungendo o rimuovendo una classe "loading" all'elemento body. Attualmente, l'immagine di caricamento anima la dimensione dello sfondo da 0 a 100% e sfuma l'opacità (viceversa per la transizione "ritorno").
Quello che voglio realizzare, però, è quello di avere la transizione background-size avviene istantaneamente (non di transizione) sul fade out, quindi:
- Dissolvenza in apertura: l'opacità da 0 a 1 in .2s , dimensioni sfondo da 0 a 100% in .2s
Fade out: opacità 1-0 in .2s, dimensioni sfondo da 100% a 0 dovrebbe accadere istantaneamente
#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 }
Ho cambiato proprietà di transizione per il selettore .loading #loader .image
di "opacità" piuttosto che "tutti", ma esegue ancora la transizione background-size.
Qualcuno sa come raggiungere le diverse fade in e fade out transizioni descritte in precedenza con CSS3? Grazie!
Aggiornato codice di lavoro
Il problema stava rompendo le singole proprietà (margini, sfondo) in un elenco separato da virgole. Credo utilizzando transizione: tutto sarà impedire di essere in grado di fare diversi IN e OUT transizioni.
#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;
}
1 Sì. Questa è la strada giusta. Scoppia in classi e aggiungi/rimuovi secondo necessità. Ci sono alcuni problemi con l'aggiunta di classi in Javascript con transizioni che vado qui: http://stackoverflow.com/a/8213003/918414 – ThinkingStiff
Grazie! usando la transizione: tutto era il problema. Ho dovuto rompere le proprietà di transizione separate da virgole come hai fatto tu. Ho aggiornato il mio codice di lavoro nella risposta. –