jQuery UI对话框定位:将位置向上调整20px

33
我有一个对话框,通过ajax调用填充。我想限制对话框的最大高度,并且如果超过此最大高度,则允许其可滚动。下面的代码完全符合我的要求。
问题是我无法将对话框的顶部从顶部位置移动。我可以左右移动它。我也不能使用“中心”选项,因为该对话框显示在一个大的可滚动窗口中。如果我使用firebug,我可以调整顶部属性,但找不到它被设置为零的地方。
$("#your-dialog-id").dialog({
    open: function(event, ui) {
        $(this).css({'max-height': 500, 'overflow-y': 'auto'});
    },
    autoOpen:false,
    modal: true,
    resizable: false,
    draggable: false,
    width: '690',
    closeOnEscape: true,
    position: 'top'
});

我想调整对话框的y位置,使其距离窗口顶部20像素。有什么建议吗?


我不明白实际问题是什么。 - j08691
@j08691 我想调整对话框的y位置,使其距离窗口顶部绘制20像素。我只能将y位置更改为顶部、中心或底部。 - chris loughnane
20像素的上边距可以实现这个吗? - j08691
2
很遗憾,不行,但这解决了问题。 http://jsfiddle.net/chrisloughnane/wApSQ/3/ position: ['center',20] - chris loughnane
1
你的解决方案对我很有用!谢谢。我也一直在寻找这个。 - M.Ob
3个回答

71

这是完美的。 - M Gaidhane
谢谢,这是最好的解决方案。 - Dheeraj
请点分不要修改此答案,它不需要您的关注或更正。 - chris loughnane
你能解释一下这是如何工作的吗?我找不到任何相关的文档。 - varunsinghal65
@varunsinghal65 我也没有找到任何关于这个的文档。 - chris loughnane
@HimalayaGarg 原始问题已经有4年了,自那以后jQuery已经有了很大的发展,我可以看到你已经找到了最新的解决方案。 :) - chris loughnane

12

最简单的方法是:

$("#dialog").dialog({ position: { my: "center", at: "top" } });

对于那些无法正常工作的人,为了使其水平居中且垂直置顶,以下方法适用于我。不过我真的不明白为什么:$("#dialog").dialog({ position: { of: window, my: "top", at: "top" } }); (jQueryUI版本1.12.1) - Gabe

5

使用Jquery UI 1.11.4

        var Y = window.pageYOffset;

        $( "#dialogJQ" ).dialog({
            modal: true,
            closeOnEscape: false,                
            width:'auto',
            dialogClass: 'surveyDialog',
            open: function(event, ui) {
                $(this).parent().css({'top': Y+20});
            },
        });

这是现代jQuery UI的正确版本。请注意,对于宽度和高度,“auto”现在是解决方案,而不是autoResize:true,我提到这一点是因为许多人(像我一样)会发现自己尝试动态对齐对话框并调整大小(大小和边距通常一起完成)。 - Pete - iCalculator
这在我使用v1.12.1时没有起作用。它最初设置了我指定的位置,然后立即在视觉上移回到之前的位置。显然,这意味着在open函数之后有一些东西正在运行。 - Mmm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接