使用中心插件将jQuery中心元素添加到视口

使用中心插件将jQuery中心元素添加到视口,jquery,center,viewport,Jquery,Center,Viewport,我目前正在使用jquerycenter插件将我的div元素居中,到目前为止,它的工作范围已经扩展到将其居中到包含父容器的位置。我想要它做的是将其居中到当前浏览器视口中心。如何做到这一点 “我的设置”是一个简单的链接单击时,将弹出一个div,就像我希望居中显示在当前浏览器视口中心的模式一样。使用 jQuery( "#element_id" ).css( 'top', parseInt( ( jQuery( window ).height() / 2 ) + jQuery( document ).s

我目前正在使用jquerycenter插件将我的div元素居中,到目前为止,它的工作范围已经扩展到将其居中到包含父容器的位置。我想要它做的是将其居中到当前浏览器视口中心。如何做到这一点

“我的设置”是一个简单的链接单击时,将弹出一个div,就像我希望居中显示在当前浏览器视口中心的模式一样。

使用

jQuery( "#element_id" ).css( 'top', parseInt( ( jQuery( window ).height() / 2 ) + jQuery( document ).scrollTop() - jQuery( "#element_id" ).height() ) );
jQuery( "#element_id" ).css( 'left', parseInt( ( jQuery( document ).width() / 2 ) + jQuery( document ).scrollLeft() - jQuery( "#element_id" ).width() ) );

不需要插件。这就是诀窍:

$('#yourElement').css('display', 'inline-block').wrap('<table style="position:fixed;top:0;left:0;height:100%;width:100%;border-spacing:0;border-collapse:collapse"><tr><td style="vertical-align:middle;text-align:center;padding:0"></td></tr></table>');
$('#yourElement').css('display','inline block').wrap('');
现场演示:


同样,但是没有TABLE元素。我将DIV与
display:table
display:table cell
一起使用:


现场演示:

您可以链接您使用的插件吗。从另一个角度看,在,也许它可以做你想做的。这似乎在垂直中心有效,但水平中心偏左…我甚至将代码更改为使用outerWidth,但没有帮助。在我的头顶上,你可能需要使用
.outerWidth()
.outerwight()
而不是
.width()
高度()?这不能用div来完成吗?太棒了,太完美了!谢谢你的帮助…哦,如果你不介意的话,还有一件事,因为这是一个弹出窗口,有没有办法让窗口变暗,只有弹出窗口是不透明的?@Rick你可以使用RGBA设置外部DIV的背景,但在IE8及以下版本中不起作用。这里的演示:另一个演示是我-点击左下角的“关于”链接查看效果。如果你想要一个同样适用于IE8的解决方案,你必须使用微软的专有过滤器……如果我有一个长窗口,内容在视口之外,我试图将一个元素居中,为什么当前视图会跳转?这确实会将一个元素放在中间,但滚动条会跳起来,并且由于某种原因滚动条会发生一些变化。@user961627如果您使用的是我的解决方案,那是因为该元素已从流中删除。(元素被插入到一个完全定位的包装器中,这意味着元素不再在流中。)我认为您需要的是“scrollTo”插件。