我尝试过以下代码,但它只将对话框的左上角位置定位到中心,这样就可以将元素对齐到右边。如何将对话框置于计算元素宽度的实际中心,以便中心线将对话框切换到50%50%的半边?
$('.selector').dialog({ position: 'center' });
答案 0 :(得分:67)
最新的jQuery UI有一个位置组件:
$("#myDialog").position({
my: "center",
at: "center",
of: window
});
Doc:http://jqueryui.com/demos/position/
获取:http://jqueryui.com/download
答案 1 :(得分:48)
我很确定你不需要设置位置:
$("#dialog").dialog();
我确实看过这篇文章,并检查了它在official jquery-ui site about positioning a dialog上的内容:并在其中讨论了两种状态:初始化和初始化之后。
代码示例 - (取自jQuery UI 2009-12-03)
使用指定的位置选项初始化对话框。
$('.selector').dialog({ position: 'top' });
在初始化后获取或设置位置选项。
//getter
var position = $('.selector').dialog('option', 'position');
//setter
$('.selector').dialog('option', 'position', 'top');
我认为如果您要移除位置属性,您会发现它自身居中,否则请尝试第二个setter选项,您可以在其中定义“option”“position”和“center”的3个元素。
答案 2 :(得分:18)
因为对话框需要一个位置,你需要包含js位置
<script src="jquery.ui.position.js"></script>
答案 3 :(得分:11)
所以,如果有人像我一样点击这个页面,或者当我在15分钟内忘记时,我在iframe(blah)中使用jqueryui对话框版本1.10.1和jquery 1.9.1与ie8,它需要一个在指定范围内或它不起作用,即
position: {
my: "center bottom",
at: "center top",
of: $("#submitbutton"),
within: $(".content")
}
感谢@ vm370让我指向正确的方向。
答案 4 :(得分:10)
open: function () {
var win = $(window);
$(this).parent().css({
position: 'absolute',
left: (win.width() - $(this).parent().outerWidth()) / 2,
top: (win.height() - $(this).parent().outerHeight()) / 2
});
}
答案 5 :(得分: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 :(得分:6)
试试这个......
$(window).resize(function() {
$("#dialog").dialog("option", "position", "center");
});
答案 7 :(得分:6)
我获得了最佳结果,将jQuery对话框置于浏览器窗口的中心位置:
position: { my: "center bottom", at: "center center", of: window },
通过选项&#34; 使用&#34;可能更准确地定位它。正如http://api.jqueryui.com/position/的文件所述,但我很着急......
答案 8 :(得分: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
}
});
答案 9 :(得分:4)
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") }
答案 10 :(得分:4)
以下位置参数为我工作
position: { my: "right bottom", at: "center center", of: window },
祝你好运!
答案 11 :(得分:3)
根据以下讨论,问题可能是由于较新的jQuery版本中的IE兼容性较低,恢复到1.7.2似乎解决了问题,这只发生在IE8中。 http://forum.jquery.com/topic/jquery-ui-dialog-positioning-not-working-in-ie-8
答案 12 :(得分:3)
另一件可以让你使用JQuery Dialog定位的东西,特别是对于大于浏览器视图端口的文档 - 你必须添加声明
<!DOCTYPE html>
位于文档的顶部。
没有它,jquery会将对话框放在页面底部,并且在尝试拖动时可能会出错。
答案 13 :(得分:2)
尝试使用旧版本和不想使用位置的人:
$("#dialog-div-id").dialog({position: ['center', 'top'],....
答案 14 :(得分:2)
如果在移动设备上使用jquery ui,您还需要进行手动重新定心 - 通过'左和右'手动定位对话框。顶级'css属性。如果用户切换方向,则定位不再居中,并且必须在之后进行调整/重新居中。
答案 15 :(得分:2)
对于刚刚在css文件中设置的Win7 / IE9环境:
.ui-dialog {
top: 100px;
left: 350px !important;
}
答案 16 :(得分:2)
您是否只在IE中遇到此问题?如果是这样,请尝试将其添加到页面的HEAD标记的第一行:
<meta http-equiv="X-UA-Compatible" content="IE=7" />
虽然我在以后的jQuery中修复了所有兼容性问题,但今天我遇到了这个问题。
答案 17 :(得分:2)
如果您使用单独的jquery文件或自定义jquery下载,请确保您还在页面中添加了jquery.ui.position.js。
答案 18 :(得分:1)
我遇到了这个问题,我终于明白了。直到今天,我还在使用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 }
);
答案 19 :(得分:0)
我用css修复:
.ui-dialog .ui-dialog-content {
width: 975px!important;
height: 685px!important;
position: fixed;
top: 5%;
left: 50%;
margin:0 0 0 -488px;
}
答案 20 :(得分:-1)
无法让IE9以对话框为中心。
通过将其添加到css:
来修复它.ui-dialog {
left:1%;
right:1%;
}
百分比无关紧要。任何一小部分都有效。