【发布时间】:2017-02-26 20:57:52
【问题描述】:
我正在制作一个网站,其中包含一些可滑入屏幕的 div。 当按下相应的按钮时,如何使已经在前面的 div 不播放动画?
我为每个 div 设置 jQuery,如下所示:
$(button).click(function(event) {
$(div).css("right", "-100%");
$(div).animate({right: '0%'});
$(div).css("z-index", "1");
$(other-div).css("z-index", "0");
});
我需要让“隐藏”的 div 播放动画以使它们出现在最前面。如果 div 已经在前面,我只是不想播放动画。
这是我所拥有的:
https://jsfiddle.net/cn6goeuq/
我曾尝试像这样使用 .delay():
$(button).click(function(event) {
$(div).animate({right: '0%'});
$(div).css("z-index", "1");
$(other-div).css("z-index", "0");
$(other-div).delay(2000).css("right", "-100");
});
这样隐藏的 div 就会返回到“正确:-100%”而不被注意,但它不起作用。不知道为什么。
我还尝试使用一个变量来帮助我激活和停用正在显示但也是徒劳的 div 的动画。我想要这样的东西:
var x = 0;
var y = 0;
$(button1).click(function(event1){
$(div1).animate({right: '0%'});
x++;
y=0;
if (x >= 1) {
$(this).off(event1);
}
});
$(button2).click(function(event2){
$(div2).animate({right: '0%'});
y++;
x=0;
if (y >= 1) {
$(this).off(event2);
}
});
我想让 event1 在按下 button1 时只工作一次,如果按下其他按钮则重置,但它也不起作用。
我没有办法解决这个问题!
编辑
恐怕使动画有条件也不起作用。我得到了完全相同的结果。我尝试根据 z-index 使其有条件。像这样:
$(button).click(function(event) {
if($(div).css('z-index') !== '0'){
$(div).css("right", "-100%");
$(div).animate({right: '0%'});
};
$(div).css("z-index", "1");
$(other-div).css("z-index", "0");
});
【问题讨论】:
标签: jquery html css jquery-animate