Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不知道div宽度的情况下对div进行水平居中,是否可能?_Javascript_Jquery_Css - Fatal编程技术网

Javascript 在不知道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实现这一

我目前正在使用css/jquery构建一个弹出框脚本,似乎无法在所有情况下使div集中在屏幕上。是否可以在不知道div宽度的情况下将其居中

我没有在这里发布所有代码,而是在

非常感谢您的任何帮助

致意 约翰

或者,如果位置为
绝对
,您可以尝试以下操作:

$("#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; }