Sto costruendo un'applicazione AngularJS che mostra e nasconde un elemento spostando la sua opacità. L'elemento viene anche ruotato applicando un'animazione keyframe CSS. Il problema che sto affrontando è la transizione o l'animazione che balbetta.La transizione CSS viene interrotta dopo essere stata applicata all'elemento con animazione CSS
Quando l'elemento ha un'opacità pari a 1 e la transizione la sfuma a 0, l'elemento sembra tornare indietro di alcuni fotogrammi. Questo è meglio dimostrato in una GIF. Puoi vederlo saltare prima che cambi l'opacità.
Questo è il mio CSS.
.square {
width: 100px;
height: 100px;
margin: 50px;
background: black;
}
.appear.ng-hide-add {
-webkit-transition: opacity 300ms linear;
opacity: 1;
}
.appear.ng-hide-add.ng-hide-add-active {
opacity: 0;
}
.appear.ng-hide-remove {
-webkit-transition: opacity 300ms linear;
opacity: 0;
}
.appear.ng-hide-remove.ng-hide-remove-active {
opacity: 1;
}
@-webkit-keyframes rotate {
from {
-webkit-transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
}
}
.rotate {
-webkit-animation: rotate 1.5s infinite linear;
}
Questo è il mio codice HTML.
<div ng-app="app" ng-init="show = true">
<p>Toggle the opacity of the square. Sometimes the rotation is interrupted when the opacity transitions from 1 to 0.</p>
<button ng-click="show =!show">Toggle</button>
<div class="square appear rotate" ng-show="show"></div>
</div>
È possibile giocare con il tutto in questo codepen. Sperando che qualcuno possa indicarmi la giusta direzione.
Ho provato (sono sicuro che l'hai fatto anche tu) avvolgendo il quadrato in un altro elemento e nascondendo/mostrando il wrapper, ma non sembra aiutare: http://codepen.io/anon/pen/DctGj –
Sì, non ha funzionato neanche per me. Finito per andare con la tua risposta. http://stackoverflow.com/a/24474564/106997 –