如何获得平滑的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);