我正在构建一个AngularJS应用程序,该应用程序通过转换其不透明度来显示和隐藏元素。该元素还通过应用CSS关键帧动画进行旋转。我遇到的问题是过渡或动画会出现卡顿。
当元素的不透明度为1时,过渡将其淡出到0,然后该元素似乎回到了几个帧之前。这在GIF中更好地演示。您可以看到它在不透明度改变之前跳回去了。
这是我的CSS。
这是我的HTML代码。
你可以在这个 CodePen 中尝试操作。希望有人能指导我正确的方向。
当元素的不透明度为1时,过渡将其淡出到0,然后该元素似乎回到了几个帧之前。这在GIF中更好地演示。您可以看到它在不透明度改变之前跳回去了。
这是我的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;
}
这是我的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>
你可以在这个 CodePen 中尝试操作。希望有人能指导我正确的方向。