我试过下面的代码,但它只将对话框的左上角位置定位到中心,这使得元素右对齐。我怎样才能将对话框居中到计算元素宽度的真实中心,以便中心线将对话框切成 50% 50% 的一半?
$('.selector').dialog({ position: 'center' });
最新的 jQuery UI 有一个位置组件:
$("#myDialog").position({
my: "center",
at: "center",
of: window
});
文档:http://jqueryui.com/demos/position/
获取:http://jqueryui.com/download
我很确定你不需要设置位置:
$("#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 个元素。
因为对话框需要一个位置,你需要包含js位置
<script src="jquery.ui.position.js"></script>
open: function () {
var win = $(window);
$(this).parent().css({
position: 'absolute',
left: (win.width() - $(this).parent().outerWidth()) / 2,
top: (win.height() - $(this).parent().outerHeight()) / 2
});
}
因此,如果有人像我一样点击此页面,或者当我在 15 分钟内忘记时,我正在使用 jqueryui 对话框版本 1.10.1 和 jquery 1.9.1 以及 iframe(blah) 中的 ie8,并且它需要在指定范围内或者它不起作用,即
position: {
my: "center bottom",
at: "center top",
of: $("#submitbutton"),
within: $(".content")
}
感谢@vm370 为我指明了正确的方向。
将 jQuery 对话框放在浏览器窗口的中央,我得到了最好的结果:
position: { my: "center bottom", at: "center center", of: window },
如 http://api.jqueryui.com/position/ 的文档中所述,可能有更准确的方法使用选项“using”定位它,但我很着急......
为了固定中心位置,我使用:
open : function() {
var t = $(this).parent(), w = window;
t.offset({
top: (w.height() / 2) - (t.height() / 2),
left: (w.width() / 2) - (t.width() / 2)
});
}
试试这个....
$(window).resize(function() {
$("#dialog").dialog("option", "position", "center");
});
我必须调用函数
dialog()
两次来定位对话框(jQuery v1.11.2 / jQueryUI v1.10.4)。
$("#myDialog").dialog({
/* initial dialog parameters */
}).dialog({
position: {
my: "center center",
at: "center center",
of: window
}
});
Jquery UI 1.9.2
,jquery及以后版本不支持IE8
我找到了两个解决方案。
回滚到
jquery UI 1.7.2
支持IE8,用
Jquery UI 1.9.2
position: {my: "center", at: "center", of: $("body"),within: $("body") }
JQuery Dialog 定位的另一个问题,尤其是对于大于浏览器视口的文档——您必须添加声明
<!DOCTYPE html>
在文档的顶部。
没有它,jquery 倾向于将对话框放在页面的底部,并且在尝试拖动它时可能会出错。
以下位置参数对我有用
position: { my: "right bottom", at: "center center", of: window },
祝你好运!
根据下面的讨论,问题可能是由于较新的 jQuery 版本对 IE 的兼容性较低,恢复到 1.7.2 似乎可以解决问题,但仅在 IE8 中出现。 http://forum.jquery.com/topic/jquery-ui-dialog-positioning-not-working-in-ie-8
我对此有疑问,我终于弄明白了。直到今天我还在使用一个非常旧的 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 }
);
如果您使用单独的 jquery 文件或自定义 jquery 下载,请确保您也已将 jquery.ui.position.js 添加到您的页面。
您是否仅在 IE 中遇到此问题?如果是这样,请尝试将此添加到页面 HEAD 标记的第一行:
<meta http-equiv="X-UA-Compatible" content="IE=7" />
虽然所有的兼容性问题都在后来的 jQuery 中得到修复,但我今天遇到了这个问题。
对旧版本和不想使用位置的人试试这个:
$("#dialog-div-id").dialog({position: ['center', 'top'],....
如果在移动设备上使用 jquery ui,您还需要手动重新居中——对话框是通过“left & top”css 属性手动定位的。如果用户切换方向,则定位不再居中,之后必须调整/重新居中。
对于 Win7/IE9 环境,只需在您的 css 文件中设置:
.ui-dialog {
top: 100px;
left: 350px !important;
}
我用 CSS 修复:
.ui-dialog .ui-dialog-content {
width: 975px!important;
height: 685px!important;
position: fixed;
top: 5%;
left: 50%;
margin:0 0 0 -488px;
}
无法让 IE9 使对话框居中。
通过将此添加到 css 来修复它:
.ui-dialog {
left:1%;
right:1%;
}
百分比无关紧要。任何小数字都有效。
position: {
my: "center bottom",
at: "center top",
of: window,
within: $(".content")
}