【问题标题】:Centering JQuery popup horizontally with max-width and min-widths使用最大宽度和最小宽度水平居中 JQuery 弹出窗口
【发布时间】:2012-09-09 22:22:45
【问题描述】:

到目前为止,我所看到的是水平和垂直居中的弹出窗口具有设定的宽度,即:

width:200px; 
height:200px;
left:50%;
top: 50%;
position:fixed;

但我正在尝试向弹出窗口添加最大和最小宽度,因为我有一些更宽,一些更短,但我想控制宽度不超过某个宽度。

.web_dialog
{
display: none;
position: fixed;
min-width: 360px;
min-height: 180px;
max-width: 880px;
max-height: 480px;
top: 50%;
left: 50%;
background-color: #ffffff;
padding:10px;
z-index: 102;
font-family: Verdana;
font-size: 10pt;
z-index:1001;
border:1px solid rgba(0, 0, 0, .333); 
}

现在,当我这样做时,弹出窗口会增长但向右,因此它看起来像是未居中。为我解决这个问题的任何帮助我将不胜感激。我刚刚删除了我所有的 ajax 工具包弹出窗口来替换这个简单的 jquery 弹出窗口,我希望它能够正常工作,因为我必须更改很多页面......:S

【问题讨论】:

  • 你想要纯基于 css 的解决方案还是 jQuary 可以?
  • 我不知道 JQuary 但 JQuery 会做 ;) 谢谢!

标签: jquery html css popup center


【解决方案1】:

试试这个DEMO

源代码 http://jsbin.com/ejijoj/2/edit

【讨论】:

  • 这看起来不错,但它看起来并没有真正水平居中,当我在其中放入大量文本只是为了尝试时,它在左侧留下了比右侧更多的空间。
  • 我调整了我的弹出 css 并取出了最小值,不知何故让它工作了。谢谢!
【解决方案2】:

知道宽度和高度,只需添加margin-left: -width/2margin-top: -height/2。但由于你不知道值,你首先需要捕获它,然后应用 CSS 规则:

$(function(){
  $dialog = $(".web_dialog");
  var w = $dialog.width();
  var h = $dialog.height();

  $dialog.css({'margin-left' : -w/2, 'margin-top' : -h/2});
});​

演示:http://jsfiddle.net/kenPN/

【讨论】:

  • 我试过了,但看看:jsfiddle.net/kenPN/5 你将宽度和高度设置为 200px,而不是只使用最小和最大宽度和高度,当我拿出设置时,它会将弹出窗口移出居中。
【解决方案3】:

如果您不介意将 .web-dialogue 包装在容器元素中,您可以通过以下方式使其工作:http://dabblet.com/gist/3738494,使用 'display: inline-block'、'vertical-alignment' 和 '文本对齐:居中'。

阅读更多关于我如何使元素居中的信息:http://www.css-tricks.com/centering-in-the-unknown/

【讨论】:

  • 这可行,只是容器会阻止页面上的控件。除非我删除位置,否则我无法点击任何内容:固定
  • 我建议在容器上使用 'pointer-events: none' 并在弹出窗口上使用 'auto',但支​​持不足developer.mozilla.org/en-US/docs/CSS/pointer-events :/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 2012-11-13
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多