我正在使用:
Data.$notification
.delay(1500)
.animate({
right: '+=' + (Data.$notification.width() + 45)
}, 700)
.delay(2500)
.animate({
right: '-=' + (Data.$notification.width() + 45)
}, 700, function() {
$(this).remove();
});
但它不够流畅,所以接受人们的建议我想用翻译3D css。 ATM我无法让它工作,我尝试过:
Data.$notification
.delay(1500)
.addClass('move-into-view')
.delay(2500)
.removeClass('move-into-view').addClass('move-outof-view')
.delay(1500)
.remove();
其中
.rotate-notification.move-into-view {
-webkit-transform: translate3d(-175px, 0, 0);
}
.rotate-notification.move-outof-view {
-webkit-transform: translate3d(175px, 0, 0);
}
这实际上可行吗?或者我是以错误的方式解决这个问题?
答案 0 :(得分:3)
.delay()
仅适用于队列:
.delay()方法最适合在排队的jQuery之间延迟 效果。因为它是有限的 - 例如,它没有提供一种方法 取消延迟-.delay()不是JavaScript本机的替代品 setTimeout函数,可能更适合某些用途 例。
来源:http://api.jquery.com/delay/
所以建议的路线是:
setTimeout(function () {
Data.$notification.addClass('move-into-view');
setTimeout(function () {
Data.$notification.removeClass('move-into-view').addClass('move-outof-view');
setTimeout(function () {
Data.$notification.remove();
}, 1500);
}, 2500);
}, 1500);
您还需要在CSS中为动画设置transition
规则:
.rotate-notification {
-webkit-transition : -webkit-transform 1.5s ease-in-out;
-moz-transition : -moz-transform 1.5s ease-in-out;
-ms-transition : -ms-transform 1.5s ease-in-out;
-o-transition : -o-transform 1.5s ease-in-out;
transition : transform 1.5s ease-in-out;
}
.rotate-notification.move-into-view {
-webkit-transform : translate3d(175px, 0, 0);
-moz-transform : translate(175px, 0);
-ms-transform : translate(175px, 0);
-o-transform : translate(175px, 0);
transform : translate(175px, 0);
}
.rotate-notification.move-outof-view {
-webkit-transform : translate3d(0, 0, 0);
-moz-transform : translate(0, 0);
-ms-transform : translate(0, 0);
-o-transform : translate(0, 0);
transform : translate(0, 0);
}
以下是演示:http://jsfiddle.net/vJHvA/4/
请注意,如果您不使用Modernizr之类的内容来检查浏览器兼容性并进行相应调整,那么您可以在Mobile Safari以外的浏览器中中断功能(例如Android浏览器也是WebKit浏览器)。