jquery动画如何操作两个属性,并且时间不同
答案:5 悬赏:0 手机版
解决时间 2021-11-24 03:07
- 提问者网友:星軌
- 2021-11-23 04:50
jquery动画如何操作两个属性,并且时间不同
最佳答案
- 五星知识达人网友:长青诗
- 2021-11-23 06:05
用settimeout试试呢
全部回答
- 1楼网友:时间的尘埃
- 2021-11-23 10:22
$(this).find('.left').shtop().animate({'left':'200px'},300,function(){
$(this).find('.left').shtop().animate({'opacity':0},100);
});
$(this).find('.left').shtop().animate({'opacity':0},100);
});
看看是不是你想要的
追问你这个是回调函数了,,不是我想要的,我想要两个同时变追答两个同时变就把stop()都去掉- 2楼网友:街头电车
- 2021-11-23 09:20
题主的思路是对的,可以将这两个动作分到两个animate中逐步执行。问题出在stop()函数。
先看一下stop()函数的定义和语法
定义:
stop() 方法停止当前正在运行的动画。
语法:
$(selector).stop(stopAll,goToEnd)stopAll 可选。规定是否停止被选元素的所有加入队列的动画。
goToEnd 可选。规定是否允许完成当前的动画。该参数只能在设置了 stopAll 参数时使用。
stopAll默认是true。
下面我们来看题主的语句。首先代码中定义了 animate({'left':'200px'},300),300表示从动画开始到结束,共花费300毫秒,但是紧接着浏览器执行了$(this).find('.left').stop().animate({'opcity':'0',100}),注意这里的stop,当浏览器执行stop时上一步300毫秒的动画实际上才刚刚开始,还没有执行完就被stop了。所以会感觉第一条语句没有执行。
解决的办法有两种:
1、取消第二条中的stop命令,效果是两个动画同时执行
$(this).find('.left').stop().animate({'left':'200px'},300);$(this).find('.left').animate({'opcity':'0',100});
2、设置延时,等第一步执行完毕后在执行第二步,效果是第一个动画完成后执行第二个动画
var _this = this;
setTimeout(function(){
$(_this).find('.left').animate({'opcity':'0',100});
},300);
- 3楼网友:归鹤鸣
- 2021-11-23 09:04
多个属性同时执行,时间相同:
$(this).find(".left").stop().animate({"left": "200px",
"opacity": "0"
}, 300)
多个操作同时执行,时间不同:
- 4楼网友:旧脸谱
- 2021-11-23 07:29
jquery的动画,如果你是要执行完第一个以后,在执行第二个的话,可以采用jquery的链式写法
$(this).find('.left').stop().animate({'left':'200px'},300).animate({'opacity':'0'},100)
如果要分开写的话,不要用stop(),会把上一个动画暂停
$(this).find('.left').animate({height:"300px"},3000);
$(this).find('.left').animate({width:"200px"},2000);
$(this).find('.left').stop().animate({'left':'200px'},300).animate({'opacity':'0'},100)
如果要分开写的话,不要用stop(),会把上一个动画暂停
$(this).find('.left').animate({height:"300px"},3000);
$(this).find('.left').animate({width:"200px"},2000);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯