【问题标题】:jQuery center element to viewport using center plugin使用中心插件的 jQuery 中心元素到视口
【发布时间】:2011-07-13 23:01:19
【问题描述】:

我目前正在使用 jQuery 中心插件来使我的 div 元素居中,到目前为止,它可以扩展到它确实将其居中到包含父容器的位置。我想要它做的是将其居中到当前浏览器视口中心。怎么办?

我的设置是一个简单的点击链接,一个 div 会像模态一样弹出,我想居中到当前浏览器视口中心。

【问题讨论】:

标签: jquery center viewport


【解决方案1】:

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

$('#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>');

现场演示: http://jsfiddle.net/simevidas/EnrLn/1/


同样的事情,但没有 TABLE 元素。我将 DIV 与 display:tabledisplay:table-cell 一起使用:

现场演示: http://jsfiddle.net/simevidas/EnrLn/2/

【讨论】:

  • 这很有趣,但它必须是一张桌子吗?这不能用 div 完成吗?
  • 太棒了,太棒了!感谢您的帮助...哦,如果您不介意,还有一件事,因为这是一个弹出窗口,有没有办法让我让窗口变暗并且只有弹出窗口不透明?
  • @Rick 您可以使用 RGBA 设置外部 DIV 的背景,但这在 IE8 及以下版本中不起作用。演示在这里:http://jsfiddle.net/simevidas/EnrLn/3/ 另一个演示是我的W3 Viewer - 单击左下角的“关于”链接查看效果。如果您想要一个也适用于 IE8 的解决方案,则必须使用 Microsoft 的专有过滤器...
  • 如果我有一个长窗口,其内容在视口之外,并且我尝试将元素居中,为什么当前视图会跳转?这确实将一个元素定位在中心,但滚动条向上跳跃并且滚动条由于某种原因发生了一些变化。
  • @user961627 如果您使用我的解决方案,那是因为该元素已从流程中删除。 (元素被插入到绝对定位的包装器中,这意味着该元素不再在流中。)我认为您需要的是“scrollTo”插件。
【解决方案2】:

使用

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() ) );

【讨论】:

  • 这似乎适用于垂直中心,但水平中心偏向左侧...我什至将代码更改为使用 outerWidth 但没有帮助。
  • 别想了,你可能需要使用.outerWidth().outerHeight() 而不是.width().height()
猜你喜欢
  • 2019-09-25
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多