Javascript 如何将一个宽的div居中

Javascript 如何将一个宽的div居中,javascript,jquery,html,css,Javascript,Jquery,Html,Css,以下是我尝试过的: (功能(d、s、id){ var js,fjs=d.getElementsByTagName[0]; if(d.getElementById(id))返回; js=d.createElement;js.id=id; js.src=“//connect.facebook.net/en_US/sdk.js#xfml=1&version=v2.7”; fjs.parentNode.insertBefore(js,fjs); }(文档“脚本”、“facebook jssdk”) .

以下是我尝试过的:

(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id))返回;
js=d.createElement;js.id=id;
js.src=“//connect.facebook.net/en_US/sdk.js#xfml=1&version=v2.7”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”)
.fb注释{
显示:块;
保证金:25像素自动;
背景:金;
}

另一种方法是 直接将其设置为HTML文档的子文档,而不在
或其他文件中。 然后添加css
left:50%或<代码>右侧:50%,两者之间存在差异,但它可以工作。然后添加
位置:绝对使其相对于祖先(即您案例中的HTML文档)定位


编辑: 我可以告诉你为什么它不起作用。首先,如果您尝试
左:50%
,您的注释框左边缘将从屏幕中间开始,使其从50%向右呈现,因此,仅从50%开始,而不是整个

和:要解决这个问题,您可以使用,但它将使用jQuery,而不仅仅是HTML/CSS

或:使用此

.fb-comments {
    position: block;
    width:545px;
    left: 50%;
    margin-right: -50%;
    top:150px;
    transform: translate(-50%, -50%)
} 
确保更改
top:150px以满足您的需要


编辑:我不是JavaScript程序员,但我了解基本知识,我会告诉你怎么做。没有css(正如我上面的回答对我有用) 问题是,居中一个div总是把第一个像素列放在中间,你的div确实居中,但与他的左边像素相关,而不是中间。 您的解决方案将使用Javascript&一个照片编辑应用程序,这不是一个实用的解决方案,但它可以工作

  • 获取图片或div的宽度并在某处键入。(使用照片编辑应用程序)
  • 现在,像你做的那样居中
  • 它将居中于它的左侧像素,而不是中心
  • 在JavaScript中,从右/左边缘添加图片宽度/2取决于靠近边缘的位置。 这不是一个切实可行的解决方案&在大多数情况下,它不会起作用,因为您将为每一个解决方案制定媒体规则,以使其完美
尝试设置
最小宽度
最小高度
/
宽度:自动CSS类中的属性。

您可以使用flexbox,并将其包装到容器div。如果您将该“容器div”的显示和属性设置为:

这里面的div将居中。您可以将.fb评论更新为:

.fb-comments {
  display: flex;
  margin: 25px 0;
  background: gold;
}

您的class.fb注释似乎被另一个正在加载“.fb\u iframe\u widget\u loader”的fb类取代。因此,您需要向类中添加另一个选择器,如下所示。如果希望元素占据整个屏幕,请使用display:block;,但是如果你想让它居中,那么使用display:inline block;并添加文本对齐:居中;到父容器。在这种情况下,它的身体

(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id))返回;
js=d.createElement;js.id=id;
js.src=“//connect.facebook.net/en_US/sdk.js#xfml=1&version=v2.7”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);
正文{
文本对齐:居中;
}
body.fb评论{
显示:内联块;
保证金:25像素自动;
背景:金;
}


添加
位置:相对于
fb注释的父元素(即容器)的CSS,只有
边距:25px自动设置可以使div居中。

您最好给出完整的代码。以第二个div为例,如果它的parentNode是body,则需要设置宽度和高度,如果它的parentNode不是body,则可以这样做:

.fb-comments{
        width:800px;
        height:800px;
        display:block;      
        margin:25px auto;
        background:gold;
        **position:absolute;**
    }
$(function()
    {
        var $lol = $("#lol");
        $lol.css("left",(window.innerWidth-$lol[0].offsetWidth)/2);
        $lol.css("top",(window.innerHeight-$lol[0].offsetHeight)/2);
    })
  <div id="lol" class="fb-comments" data-href="http://dubina.net16.net/comments.php" data-numposts="100"></div>
.fb注释{
宽度:800px;
高度:800px;
显示:块;
保证金:25像素自动;
背景:金;
**位置:绝对位置**
}
$(函数()
{
变量$lol=$(“#lol”);
$lol.css(“左”,(window.innerWidth-$lol[0].offsetWidth)/2);
$lol.css(“顶部”,(window.innerHeight-$lol[0]。offsetHeight)/2);
})

wrapper div/element是什么?@link2pk,请看我的更新,我想您需要添加文本align:center;对身体元素来说,另一种有趣的居中方法是将它们放入一个div中,并带有相对位置,子元素可以是绝对位置,上、下、左、右都设置为零,然后边距设置为自动。像这样的代码笔:
.fb-comments {
  display: flex;
  margin: 25px 0;
  background: gold;
}
.fb-comments{
        width:800px;
        height:800px;
        display:block;      
        margin:25px auto;
        background:gold;
        **position:absolute;**
    }
$(function()
    {
        var $lol = $("#lol");
        $lol.css("left",(window.innerWidth-$lol[0].offsetWidth)/2);
        $lol.css("top",(window.innerHeight-$lol[0].offsetHeight)/2);
    })
  <div id="lol" class="fb-comments" data-href="http://dubina.net16.net/comments.php" data-numposts="100"></div>