Javascript 在不知道div宽度的情况下对div进行水平居中,是否可能?
我目前正在使用css/jquery构建一个弹出框脚本,似乎无法在所有情况下使div集中在屏幕上。是否可以在不知道div宽度的情况下将其居中 我没有在这里发布所有代码,而是在 非常感谢您的任何帮助 致意 约翰 或者,如果位置为Javascript 在不知道div宽度的情况下对div进行水平居中,是否可能?,javascript,jquery,css,Javascript,Jquery,Css,我目前正在使用css/jquery构建一个弹出框脚本,似乎无法在所有情况下使div集中在屏幕上。是否可以在不知道div宽度的情况下将其居中 我没有在这里发布所有代码,而是在 非常感谢您的任何帮助 致意 约翰 或者,如果位置为绝对,您可以尝试以下操作: $("#child").css("left", function(){ return ($("#wrapper").width() - $(this).width()) / 2; }); 如果您有一个包含div,则可以使用纯CSS实现这一
绝对
,您可以尝试以下操作:
$("#child").css("left", function(){
return ($("#wrapper").width() - $(this).width()) / 2;
});
如果您有一个包含div,则可以使用纯CSS实现这一点: HTML
似乎与位置无关:绝对;在内部div上?在你摆脱绝对定位之前,这不会起作用。使用容器,并将其置于孩子中间是一种方法,但您需要失去绝对位置。如果你想使用绝对定位(为什么?我会问),那么你可能需要css上的js助手来正确定位。我建议你停止指定完整路径,因为id也是唯一的。它只会引入不必要的冗长。@LiamBailey很抱歉,但我需要使用position:absolute来执行此任务:(或者有其他方法吗?@John,如果你必须在div上有position:absolute,那么我相信你必须知道它的维度,要么在CSS中预先设置它们,要么用JS动态地获取它们。这可能是我见过的CSS中最奇怪的黑客行为。可悲的是,我在使用它时同样感到内疚,因为它是有效的。@Raminson,我没有ried添加了一个包装器并将jquery代码添加到脚本中,这就是发生的事情。或者我完全迷路了吗?:)谢谢您的帮助。@Raminson,但我无法让它在JSFIDLE上工作,但代码在那里,但没有jquery,谢谢您的研究。@John,不客气,兄弟,尝试一下这个,也不要使用
onclick
属性,您可以使用单击
或悬停
事件处理程序:@Raminson感谢您的所有帮助!se特快专递现在开始工作:)
#child {
margin: 0 auto;
}
$("#child").css("left", function(){
return ($("#wrapper").width() - $(this).width()) / 2;
});
<div id="outer">
<div id="inner">some content here</div>
</div>
body, html, div#outer { height:100%; }
div#outer { text-align:center; }
div#inner { display:inline-block; }