jQuery UI对话框没有定位中心屏幕

我有一个jQuery对话框,旨在位于屏幕中间。 但是,它似乎有点偏离中心垂直。

这里是代码:

$('#add_box').dialog({ autoOpen: true, width: 300, modal: true, resizable: false, bgiframe:true }); 

任何想法,为什么这不会中心?

如果您的视口在对话框显示后滚动,它将不再居中。 可能会无意中通过添加/删除页面中的内容来导致视口滚动。 在滚动/resize事件期间,您可以通过调用以下命令来重新对话窗口:

 $('my-selector').dialog('option', 'position', 'center'); 

您是否将jquery.ui.position.js添加到您的页面? 我有同样的问题,在这里检查了源代码,并意识到我没有添加该js到我的网页,之后..对话神奇居中。

在这里挖掘一个古老的坟墓,但为新的谷歌search者。

通过将此事件添加到对话框中,您可以在用户滚动时保持模型窗口的位置。 这将把它从绝对定位变为固定。 无需监视滚动事件。

 open: function(event, ui) { $(this).parent().css('position', 'fixed'); } 

我遇到了同样的问题。 它最终成为jquery.dimensions.js插件。 如果我删除它,一切正常。 我把它包括了,因为另一个需要它的插件,但我从这里发现,尺寸包括在jQuery核心不久前( http://api.jquery.com/category/dimensions )。 你应该可以简单地删除尺寸插件。

只需在同一页面添加下面的CSS行。

 .ui-dialog { position:fixed; } 

1)jQuery对话框以你插入的任何元素为中心。

没有更多的信息,我的猜测是你有一个边缘或类似的东西。 将popup的div移动到身体级别,你就可以走了。

2.)如果您在加载时dynamic地向div添加内容,则居中将不正确。 不要显示div,直到你有你的数据放入它。

要解决这个问题,我确保我的身高设置为100%。

 body { height:100% } 

当用户滚动时,这也保持中心位置。

对我来说,jquery.dimensions.js是罪魁祸首

这个问题通常与通过锚标签( <a href='#' id='openButton'>Open</a><a href='#' id='openButton'>Open</a>对话框有关,而不是阻止处理程序中的默认浏览器行为

 $('#openButton').click(function(event) { event.preventDefault(); //open dialog code... }); 

这通常不需要任何定位/滚动插件。

将此添加到您的对话声明中

 my: "center", at: "center", of: window 

例如:

 $("#dialog").dialog({ autoOpen: false, height: "auto", width: "auto", modal: true, my: "center", at: "center", of: window }) 

我正面临同样的问题,让对话框不能打开,并将页面滚动到顶部。 我用来打开对话框的标签是一个锚标签:

<a href="#">View More</a>

英镑符号导致我的问题。 我所做的只是修改锚点中的href,如下所示:

<a href="javascript:{}">View More</a>

现在我的页面很高兴并且把对话框居中。

我的情景:我不得不向下滚动页面以打开一个button单击对话框,由于窗口滚动对话框没有垂直打开中心到窗口,它正在从视口移出。

正如Ken上面提到的那样,在你设置你的模态内容之后执行下面的语句。

 $("selector").dialog('option', 'position', 'center'); 

如果内容是在模式打开之前预先加载的,只需在打开的事件中执行此操作,否则在打开的事件中操作DOM,然后执行语句。

 $( ".selector" ).dialog({ open: function( event, ui ) { //Do DOM manipulation if needed before executing below statement $(this).dialog('option', 'position', 'center'); } }); 

它对我来说工作得很好,最好的事情是你不包括任何其他插件或库来工作。

刚刚解决了同样的问题,问题是我没有导入一些js文件,如widget.js 🙂

上面的解决scheme似乎没有为我工作,因为我的代码dynamic生成两个包含div,并在其中一个未caching的图像。 我的解决scheme如下:

请注意img上的“load”调用,以及对话框调用中的“close”参数。

 var div = jQuery('<div> </ div>')
                   .attr({id:'previewImage'})
                   .appendTo( '主体')
                   。隐藏();
 var div2 = jQuery('<div> </ div>')
                  的CSS({
                       maxWidth:parseInt(jQuery(window).width()* .80)+'px'
                       ,maxHeight:parseInt(jQuery(window).height()* .80)+'px'
                       ,溢出:“自动”
                   })
                   .appendTo(DIV);
 var img = jQuery('<img>')
                   .attr({'src':url})
                   .appendTo(DIV2)
                   .load(function(){
                       div.dialog({
                           'modal':是的
                           ,'宽度':'自动'
                           ,closures:function(){
                                div.remove();
                           }
                       });
                   });

这是我如何解决这个问题,我添加了这个对话框的打开function:

  open: function () { $('.ui-dialog').css("top","0px"); } 

这现在打开屏幕顶部的对话框,而不pipe页面滚动到哪里以及在所有的浏览器中。

将对话框定位在屏幕中央:

 $('#my-selector').parent().position({ my: "center", at: "center", of: window }); 

我遇到了同样的问题,当我input对话框的高度时,问题就解决了:

 $("#dialog").dialog({ height: 500, width: 800 }); 

您必须添加声明

在文档的顶部。

没有它,jquery倾向于把对话框放在页面的底部,当拖动它时可能会发生错误。

 $("#dialog").dialog({ autoOpen: false, height: "auto", width: "auto", modal: true, my: "center", at: "center", of: window }) 

这个解决scheme的确行得通,但是只是因为新的jQuery版本完全忽略了这个,并且回落到默认值,这正是这个。 所以你可以从你的选项中删除位置:'中心',如果你只想popup中心。

我不得不把这个添加到我的HTML文件的顶部: <!doctype html> 。 我不需要设置position属性。 这是与jQuery 3.2.1。 在1.7.1中,这是不需要的。