如何将我的 jQuery 对话框定位到中心?

问题描述 投票:0回答:22

我试过下面的代码,但它只将对话框的左上角位置定位到中心,这使得元素右对齐。我怎样才能将对话框居中到计算元素宽度的真实中心,以便中心线将对话框切成 50% 50% 的一半?

$('.selector').dialog({ position: 'center' });

http://docs.jquery.com/UI/Dialog#option-position

jquery jquery-ui dialog jquery-dialog
22个回答
72
投票

最新的 jQuery UI 有一个位置组件:

$("#myDialog").position({
   my: "center",
   at: "center",
   of: window
});

文档:http://jqueryui.com/demos/position/
获取:http://jqueryui.com/download


51
投票

我很确定你不需要设置位置:

$("#dialog").dialog();

默认居中.

我确实看过这篇文章,还检查了jquery-ui官方网站上关于定位对话框的内容:其中讨论了两种状态:初始化和初始化后。

代码示例-(取自 jQuery UI 2009-12-03)

使用指定的位置选项初始化对话框。

$('.selector').dialog({ position: 'top' });

在初始化后获取或设置位置选项。

//getter
var position = $('.selector').dialog('option', 'position');
//setter
$('.selector').dialog('option', 'position', 'top');

我认为,如果您要删除位置属性,您会发现它本身居中,否则请尝试第二个 setter 选项,您在其中定义“选项”、“位置”和“中心”的 3 个元素。


20
投票

因为对话框需要一个位置,你需要包含js位置

<script src="jquery.ui.position.js"></script>

12
投票
open: function () {

    var win = $(window);

    $(this).parent().css({
        position: 'absolute',
        left: (win.width() - $(this).parent().outerWidth()) / 2,
        top: (win.height() - $(this).parent().outerHeight()) / 2
    });
}

11
投票

因此,如果有人像我一样点击此页面,或者当我在 15 分钟内忘记时,我正在使用 jqueryui 对话框版本 1.10.1 和 jquery 1.9.1 以及 iframe(blah) 中的 ie8,并且它需要在指定范围内或者它不起作用,即

position: {
 my: "center bottom",
 at: "center top",
 of: $("#submitbutton"),
 within: $(".content")
}

感谢@vm370 为我指明了正确的方向。


9
投票

将 jQuery 对话框放在浏览器窗口的中央,我得到了最好的结果:

position: { my: "center bottom", at: "center center", of: window },

http://api.jqueryui.com/position/ 的文档中所述,可能有更准确的方法使用选项“using”定位它,但我很着急......


7
投票

为了固定中心位置,我使用:

open : function() {
    var t = $(this).parent(), w = window;
    t.offset({
        top: (w.height() / 2) - (t.height() / 2),
        left: (w.width() / 2) - (t.width() / 2)
    });
}

6
投票

试试这个....

$(window).resize(function() {
    $("#dialog").dialog("option", "position", "center");
});

5
投票

我必须调用函数

dialog()
两次来定位对话框(jQuery v1.11.2 / jQueryUI v1.10.4)。

$("#myDialog").dialog({
    /* initial dialog parameters */
}).dialog({
    position: {
        my: "center center",
        at: "center center",
        of: window
    }
});

5
投票

Jquery UI 1.9.2
,jquery及以后版本不支持IE8

我找到了两个解决方案。

  1. 回滚到

    jquery UI 1.7.2
    支持IE8,

  2. Jquery UI 1.9.2

  3. 试试这个代码
position: {my: "center",  at: "center", of: $("body"),within: $("body") }

4
投票

JQuery Dialog 定位的另一个问题,尤其是对于大于浏览器视口的文档——您必须添加声明

<!DOCTYPE html>

在文档的顶部。

没有它,jquery 倾向于将对话框放在页面的底部,并且在尝试拖动它时可能会出错。


4
投票

以下位置参数对我有用

position: { my: "right bottom", at: "center center", of: window },

祝你好运!


3
投票

根据下面的讨论,问题可能是由于较新的 jQuery 版本对 IE 的兼容性较低,恢复到 1.7.2 似乎可以解决问题,但仅在 IE8 中出现。 http://forum.jquery.com/topic/jquery-ui-dialog-positioning-not-working-in-ie-8


3
投票

我对此有疑问,我终于弄明白了。直到今天我还在使用一个非常旧的 jQuery 版本,版本 1.8.2.

我用过的所有地方

dialog
我用以下位置选项初始化它:

$.dialog({
    position: "center"
});

但是,我发现删除

position: "center"
或用正确的语法替换它并不能解决问题,例如:

$.dialog({
    position: {
       my: "center",
       at: "center",
       of: window
    }
});

虽然上面是正确的,但我在加载页面时也使用

option
将位置设置为中心,以旧方式,像这样:

// The wrong old way of keeping a dialog centered
passwordDialogInstance.dialog("option", "position", "center");

这导致我所有的对话窗口都停留在视口的左上角。

我必须用下面正确的新语法替换它的所有实例:

passwordDialogInstance.dialog(
    "option",
    "position", 
    { my: "center", at: "center", of: window }
);

2
投票

如果您使用单独的 jquery 文件或自定义 jquery 下载,请确保您也已将 jquery.ui.position.js 添加到您的页面。


2
投票

您是否仅在 IE 中遇到此问题?如果是这样,请尝试将此添加到页面 HEAD 标记的第一行:

<meta http-equiv="X-UA-Compatible" content="IE=7" />

虽然所有的兼容性问题都在后来的 jQuery 中得到修复,但我今天遇到了这个问题。


2
投票

对旧版本和不想使用位置的人试试这个:

$("#dialog-div-id").dialog({position: ['center', 'top'],....

2
投票

如果在移动设备上使用 jquery ui,您还需要手动重新居中——对话框是通过“left & top”css 属性手动定位的。如果用户切换方向,则定位不再居中,之后必须调整/重新居中。


2
投票

对于 Win7/IE9 环境,只需在您的 css 文件中设置:

.ui-dialog {
   top: 100px;
   left: 350px !important;
}

0
投票

我用 CSS 修复:

.ui-dialog .ui-dialog-content {
  width: 975px!important;
  height: 685px!important;
  position: fixed;
  top: 5%;
  left: 50%;
  margin:0 0 0 -488px;
}

0
投票

无法让 IE9 使对话框居中。

通过将此添加到 css 来修复它:

.ui-dialog {
    left:1%;
    right:1%;
}

百分比无关紧要。任何小数字都有效。


0
投票
position: {
 my: "center bottom",
 at: "center top",
 of: window,
 within: $(".content")
}
© www.soinside.com 2019 - 2024. All rights reserved.