如何获得平滑的javascript弹出窗口大小调整
我想要一个弹出窗口调整到最小大小之前关闭。我想让用户看到动画,让他们明白他们使用的窗口正在消失 我已经想出了下面的代码,但它非常粗糙。有没有更顺畅的办法? 谢谢大家!如何获得平滑的javascript弹出窗口大小调整,javascript,Javascript,我想要一个弹出窗口调整到最小大小之前关闭。我想让用户看到动画,让他们明白他们使用的窗口正在消失 我已经想出了下面的代码,但它非常粗糙。有没有更顺畅的办法? 谢谢大家! function resizeWindow() { setTimeout(function() { window.resizeTo(500, 500); }, 100); setTimeout(function() { window.resizeTo(475, 475);
function resizeWindow() {
setTimeout(function() {
window.resizeTo(500, 500);
}, 100);
setTimeout(function() {
window.resizeTo(475, 475);
}, 125);
setTimeout(function() {
window.resizeTo(450, 450);
}, 150);
setTimeout(function() {
window.resizeTo(425, 425);
}, 175);
setTimeout(function() {
window.resizeTo(400, 400);
}, 200);
setTimeout(function() {
window.resizeTo(350, 350);
}, 250)
setTimeout(function() {
window.resizeTo(300, 300);
}, 300);
setTimeout(function() {
window.moveTo(900, 600);
}, 350);
setTimeout(function() {
window.resizeTo(100, 100);
}, 400);
setTimeout(function() {
window.resizeBy(10, 10);
}, 500);
setTimeout(function() {
window.close();
}, 500);
}
使用jQuery动画 下面的函数可以与任何div大小一起使用,您可以为动画设置任何时间
$(.closeBtn”)。单击(函数(){
var parentElem=$(this).parents(.popup”).first();//获取需要关闭的父div
parentElem.animate({//将父div的宽度和高度设置为0
“宽度”:“0”,
“高度”:“0”
},
1000,//动画时间:1000ms=1秒
函数(){
parentElem.hide();//动画完成后,隐藏div(如果希望完全删除div,可以使用.remove()
})
});
.popup{
边框:1px实心#000;
宽度:250px;
高度:50px;
}
弹出文本显示在这里。
这是一个使用setInterval
而不是setTimeout
的实现。我怀疑它解决了“锯齿”动画的问题,但提供了比代码更好的性能
你想调整一个实际的弹出窗口(新窗口)还是文档中一个样式为弹出窗口的div?这是一个新窗口(一个单独的弹出窗口,Mozilla样式)。你的答案是关于一个带有类弹出窗口的div。OP问的是一个实际的弹出窗口(新窗口)。哦,我的错。我没有注意到!我检查了它,它工作得很好(尽管由于某些原因,宽度和高度的减少速度不同……)我怎么能接受答案(看不到左边的复选标记!)?好的,找到了!我认为JQuery是一个不同的答案…我接受“纯”JS:-)感谢循环(计算原始大小以创建清晰的循环是一个好主意:)
var child = window.open("www.google.com","_blank","toolbar=yes,scrollbars=yes,resizable=yes,top=0,left=0,width=500,height=500");
function resizeWindow(child) {
var width = 500;
var height = 500;
var timer = setInterval(function(){
if(width > 10) {
child.resizeTo(width-=25,height-=25);
}else{
child.close();
clearInterval(timer);
}
},0);
}
resizeWindow(child);