我正在使用 ng-animate 在 AngularJS 中制作一个简单的滑动面板。这在 Chrome 中运行良好,但在 FireFox 中动画非常不一致。这可能是由于 Gecko 中的 Transitions 支持。这几乎看起来像是一个动作队列问题。因为您可以中断显示/隐藏并让动画执行,但它会在随机时刻弹出到位。
为什么会出现这种不一致?
这可以纠正吗?如果可以,是否有优雅的跨浏览器修复?
JS小提琴:
角度:
var app = angular.module('myApp', []);
app.controller('sidePanel', ['$scope', '$rootScope', '$timeout', '$animation', function($scope, $rootScope, $timeout, $animation) {
$scope.showMe = false;
$scope.hideMe = function() {
$scope.showMe = false;
}
$scope.$on('showPanel', function() {
$scope.showMe = true;
});
$scope.showPanel = function() {
$rootScope.$broadcast('showPanel');
};
}]);
CSS:
.side-panel { position: relative; display: block; border: 2px solid #000; } /* left: -50px; overflow: visible; */
.side-panel div { width: 210px; height: 180px; background-color: #ffcc00; }
.animate-show,
.animate-hide {
-webkit-transition: 550ms linear all;
-moz-transition: 550ms linear all;
-ms-transition: 550ms linear all;
-o-transition: 550ms linear all;
transition: 550ms linear all;
position: relative;
display: block;
}
.animate-show.animate-show-active,
.animate-hide { left: 0; }
.animate-hide.animate-hide-active,
.animate-show { left: -500px; }