我被我得到的动画遗留下来,基本上我在导航按钮上设置了一个类,当菜单可见时,它会将它从三个引脚转换为x。
问题是当你垃圾邮件点击按钮时,尽管菜单不在屏幕上,x
类仍然可以激活。这很可能是由stop()
函数引起的,因为它取消了动画。
这是我到目前为止所尝试的:
stop()
,我需要的。
这是我目前的尝试:
nav.directive('navSettings', [function() {
return {
restrict: 'A',
link: function($scope, element, attrs) {
var windowHeight = $(window).height(),
siteNav = $('#site-nav');
siteNav.css('height', windowHeight + 'px');
element.on('click', function() {
var posLeft = siteNav.position().left,
navWidth = siteNav.width();
posLeft === -navWidth ? posLeft = 0 : posLeft = -navWidth;
if (element.hasClass('x')) {
element.removeClass('x');
siteNav.stop().animate({
left: posLeft
});
}
else {
element.addClass('x');
siteNav.stop().animate({
left: posLeft
});
}
});
}
}
}]);
一些HTML与此相符:
<div>
<div>
<button id="nav-toggle" data-nav-settings>
<hr ng-repeat="pin in [1, 2, 3]">
</button>
</div>
</div>
<aside id="site-nav">
<nav class="padding narrow" ng-controller="NavCtrl"></nav>
</aside>
我不知道还有什么可以确保不会发生这种情况。
答案 0 :(得分:1)
nav.directive('navSettings', [function() {
return {
restrict: 'A',
link: function($scope, element, attrs) {
var windowHeight = $(window).height(),
siteNav = $('#site-nav');
siteNav.css('height', windowHeight + 'px');
element.on('click', function() {
var posLeft, navWidth = siteNav.width();
if (element.hasClass('x')) {
element.removeClass('x');
posLeft = -navWidth;
}else{
element.addClass('x');
posLeft = 0;
}
siteNav.stop().animate({
left: posLeft
});
});
}
}
}
]);
删除了对左侧位置的额外检查,并将动画移到了if
之外。现在检查垃圾邮件过滤器是否有效:)