【问题标题】:jQuery UI Dialog Position Fixed CenterjQuery UI 对话框位置固定中心
【发布时间】:2014-01-14 04:06:14
【问题描述】:

我试图在页面中心以模式模式显示对话框,位置固定,但我无法让它正常工作。作为一种解决方法,我目前设置了

position: "top"

所以至少它被固定在视口的顶部。当我使用中心选项时,它只是使用高度的 50% 作为顶部属性。由于我的页面约为 7000 像素,因此它超出了视口,用户无法看到它。

有没有人对如何实现这一点有好的建议?我试过 CSS 选项,但由于 top 属性是动态设置的,CSS 根本没有任何效果。

我也尝试过将其居中到叠加层,但由于 ui-overlay 元素在模态初始化之前不存在,因此我无法将其用作居中的弓箭手。

仅供参考,我正在尝试将其作为定位 hallojs 链接小部件错误的解决方法。

【问题讨论】:

  • 您可以尝试在模态的 CSS 中使用 position: absolute; top: 0; right: 0; bottom: 0; left: 0;。这应该完美地居中。
  • 那行不通。样式在元素本身的 html 中设置,因此它完全覆盖了 CSS 中的所有样式。

标签: javascript css jquery-ui-dialog hallo-js


【解决方案1】:

你可以把它放在窗口的中心。我做了一个 jQuery 方法来处理它。不知道为什么你需要它有一个固定的位置,除非你希望用户仍然能够滚动显示模式的窗口?这是 jQuery 居中扩展:

(function($)
{
$.fn.centerMe = function(centerIn)
{
    var containerWidth = $(centerIn).width();
    var containerHeight = $(centerIn).height();
    var elWidth = $(this).width();
    var elHeight = $(this).height();
    $(this).css('left', containerWidth / 2 - elWidth / 2);
    var adjTop = containerHeight / 2 - elHeight / 2;
    $(this).css('top', $(parent.window.document).scrollTop() + adjTop);
};
})(jQuery);

用法是 $('#myToBeCenteredElement').centerMe(window);要居中的东西通常是 display:none;页面某处。您将其显示并居中,等等。

要居中的元素需要有绝对定位。

我还把它做成了另一个来捕捉窗口滚动事件并进行相应的调整。

【讨论】:

  • 这似乎是一种解决方法而不是解决方案。我想要实现的是让它相对于触发它的按钮定位。但是,在此库中初始化对话框模式之前,该按钮不可用。
猜你喜欢
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 2011-12-22
  • 1970-01-01
相关资源
最近更新 更多