【问题标题】:margin: 0 auto does not appear to center边距:0 自动似乎不居中
【发布时间】:2013-10-19 05:08:56
【问题描述】:

我知道这个问题以前一定被问过很多次,但我确实看过已经存在的答案,但似乎没有任何效果!我已经在元素上定义了宽度,尝试删除浮动:左(这似乎没有居中,它也破坏了我的布局..),尝试将其设置为显示:块,我在使用页脚清除浮动之前做过所有这一切,也尝试使用 text-align center 。但是,是的,似乎没有什么可以将其置于中心位置。

.container3col {
    width: 1200px;
    background: #FFFFFF;
    margin: 0 auto;
    display:block;
}

.leftbar {
    width: 180px;
    padding-bottom: 10px;
    background:#00FF00;
    float:left;
    }
.content {
    padding: 10px 0;
    width: 840px;
    background:#FF0000;
    float:left;
}
.rightbar {
    width: 180px;
    padding: 10px 0;
    background:#00F;
    float:left;
}

我的 HTML 部分目前确实包含很多内容,因此将其全部发布可能有点混乱。基本上我创建了一个容器 DIV 并将左栏、内容和右栏 DIV 放入其中。我相当确定所有内容都符合其 DIV 的宽度限制。

可能会影响我的代码的一件事是我确实使用了脚本来更改 display:none; 中的内容。显示:阻止(以便用户可以单击链接并加载文章的其余部分)。

在此之前我做了一个两列布局,看起来效果很好;它居中很好,无需删除浮动或类似的东西。也使用了我在上面段落中提到的 display:none 来阻止事物。两列页面工作得很好。

谢谢。

编辑:这是它的一个小提琴。由于很多内容是不必要的(即文章只是充满了填充文本),我删除了一些内容。 http://jsfiddle.net/Snail489/W6C9v/6/

【问题讨论】:

  • 显示相关的 HTML。我可以说一件事,container3col 只有在它所在的窗口大于 1200 像素时才会居中。那是问题发生的时候吗?无论如何,使用 JS 更改显示属性应该没有问题(除非 JS 中有拼写错误,但我们假设没有)。
  • @avrahamcool 发布了一个问题。我确实删除了一些不必要的元素,例如文章的填充文字。
  • @MrLister 窗口宽度超过 1200 像素,是的(它在 1366x780 或类似的分辨率下最大化 - 我不记得确切但我绝对确定它大于 1200)。当我创建类似的两列布局时,容器为 1200 像素,并且在最大化的窗口中完美居中。
  • 您的 CSS(HTML 类型的注释)中有一个错误,导致无法应用 .container3col 的样式。删除它。
  • @MrLister 没想到这些 cmets 实际上会影响布局,但看起来确实如此 - DIV 现在居中。非常感谢:D

标签: css html margin centering


【解决方案1】:

这对我有用

<style>
/* CSS Document */
body {
    font-size:12px;
    color:#000000;
    font-family: Tahoma, Geneva, sans-serif;
    }
.container3col 
    {
     width: 1200px;
     margin: 0 auto;
     display:block;
    }

.leftbar {
    width: 180px;
    padding-bottom: 10px;
    background:#5F5;
    float:left;
}

.content {
    padding: 10px 0;
    width: 840px;
    background:#F55;
    float:left;
}

.rightbar {
    width: 180px;
    padding: 10px 0;
    background:#5FF;
    float:left;
}

.header {
    width:1200px;
    background:url(../texture.jpg);
}

.footer {
    background: #FFF;
    position: relative;
    clear: both;
    background:url(../texture.jpg);
}
</style>

检查我的 jsfiddle:http://jsfiddle.net/pB2aC/

【讨论】:

    【解决方案2】:

    代替margin: 0 auto;试试text-align:center

    【讨论】:

    • 之前尝试过 text-align:center 。我想我添加到容器的样式中;当我尝试这个时,什么都没有发生。如果我尝试将它应用于每个 div 的样式,唯一会发生的事情就是文本居中(而不是 DIV 本身)。