【问题标题】:DIV Inside jQueryUI Dialog is overflowed after multiple resizes to the dialog多次调整对话框大小后,jQueryUI 对话框内的 DIV 溢出
【发布时间】:2013-12-12 21:39:24
【问题描述】:

大家好,感谢大家一直在这里找到的优质答案...

我有一个 jQueryUI 对话框,里面有一个 DIV...

这个 div 被设置为填充对话框空间:

div.dialog-contents {
    position: absolute; 
    top: 0; 
    left: 0; 
    right: 0; 
    bottom: 0;
}

当我开始调整对话框的大小(水平或垂直)时,它会慢慢开始缩小或放大超出对话框边界!!!...这很奇怪...

当我使用调试工具检查元素时,我注意到:

在外部 div(创建对话框的 div)中,大小是这样计算的: width: 294.960000038147px;

但是在内部 div(填充空间的那个)中,它是四舍五入的,所以当我调整对话框大小时,它开始是不同的像素 width: 248px;

我不知道我做错了什么,我应该使用其他设置来完成此操作吗?

我只希望我的内部 div 始终为 100% 宽度和 100% 高度(并保持在对话框边界内)

这是小提琴 http://jsfiddle.net/e9QjD/2/

尝试多次调整对话框的大小以查看行为

非常感谢!

【问题讨论】:

  • 您的 JSFiddle 似乎缺少某些内容。发生在我身上的一件事是,如果您在共享后进行了编辑,我没有意识到您需要单击更新。这有帮助吗?
  • 在 chrome 和 firefox 中对我来说很好
  • 真的对你有用吗??您是否尝试过多次调整大小(例如 8 或 10)?
  • @Juanchi 我的回答可以得到一些反馈吗?谢谢

标签: javascript jquery html css jquery-ui


【解决方案1】:

以下是一种可能的解决方法。

我确实看到您的window-session-editor 的高度存在问题,在每次调整大小时,高度相对于模态都会略微增加。我看不出宽度变化的问题。我不确定为什么会发生这种情况,但解决方法是在每次调整大小后重新调整高度。

$(function () {   
    $("#window-session_editor").dialog({
        resizeStop: function( event, ui ) {
            $(this).height($(this).parent().height()-$(this).prev('.ui-dialog-titlebar').height()-34);
        }    
    }); 
});

http://jsfiddle.net/e9QjD/3/

更新寻址宽度

$(function () {   
    $("#window-session_editor").dialog({
        resizeStop: function( event, ui ) {
            $(this).height($(this).parent().height()-$(this).prev('.ui-dialog-titlebar').height()-34);
            $(this).width($(this).prev('.ui-dialog-titlebar').width()+2);
        }    
    }); 
});

http://jsfiddle.net/e9QjD/4/

【讨论】:

  • 嗨 Trevor,感谢您的解决方法,但内部 div 的宽度似乎仍在缩小,我不知道为什么,但如果您开始调整大小,它开始缩小...我我在 Windows 上使用 Chrome,但也在 firefox 上测试过......
  • @Juanchi 嗯,我没有看到宽度在缩小,我也在 Windows 上使用 chrome。我再看看。好的,现在我看到了。我会得到更新。
  • 是的,它有效!非常感谢@Trevor,您不认为这种行为就像 jQueryUI 对话框中的错误吗??
  • @Juanchi 我认为您可能是对的。您可能可以报告它并在此问题中包含您的示例。请将此答案标记为已接受,它解决了您的问题。 (查找问题左侧的checkmark 并单击它。谢谢!
  • 非常感谢@Trevor,您能帮我解决最后一件事吗?高度上的-34 代表标题栏的高度,对吗?我认为宽度上的 +2 代表填充,有什么方法可以使它更通用,比如从 dom 访问该值而不是直接设置它?
猜你喜欢
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多