css:神秘的“边缘”

时间:2011-07-13 15:06:43

标签: css layout padding margin reset

每当我有两个元素水平并排,右边和/或左边填充和/或边距指定时,元素之间通常会有超出我指定的空间。我希望有人可以告诉我如何消除这个空间(没有像负面边缘那样的狡猾)。

请注意:我不是在寻找替代的多列CSS布局技术。我知道它们有很多,这个问题比列布局问题更重要。

以下是working example page的标记和样式。 Here's a partial screenshot of that page显示使用Firebug选择的左侧元素。有问题的神秘空间位于右侧,并标有红色星号。没有包含重置样式,但我插入了Eric Meyers的重置,但它没有解决问题。

    <div id="side-a"> 
           <p>
        Lorem ipsum ....
        </p> 
    </div> 
    <div id="side-b"> 
           <p>
        Nunc dapibus....
        </p> 
    </div>

    <div id="website-footer"> 
           <ul id="legal-information"> 
                  <li>Copyright 2011</li> 
                  <li><a href="#">Privacy Policy</a></li> 
           </ul> 
    </div>

    div#side-a,
    div#side-b {
        display: inline-block;
        width: 200px;
        padding: 17px 17px 0;
    }

    div#side-a {
           vertical-align: top;
    }

    div#side-b {
           background: #999;
    }

    ul {
           padding-bottom: 17px;
           list-style: none outside none;
    }

    ul li {
           line-height: 17px;
           margin-left: 17px;
    }

    div#website-footer ul#legal-information {
           float: left;
    }

    div#website-footer ul#legal-information li {
           border-left: 1px solid #29443C;
           display: inline;
           margin: 17px 0;
           padding-left: 8px;
    }

    div#website-footer ul#legal-information li:first-child {
           border-left: medium none;
           padding: 0 8px 0 0;
    }

2 个答案:

答案 0 :(得分:3)

由于inline-block,这很自然。简单的解决方案是杀死空白。

http://work.arounds.org/issue/6/unwanted-white-space-between-inline-block-elements/

还有其他基于CSS的解决方法,例如在主体上设置字体大小为0,但AFAIK则不一致/可靠。我可能错了。

答案 1 :(得分:0)

我改变了这个Css:

div#side-a,
div#side-b {
  float: left
  width: 200px;
  padding: 17px 17px 0;
}

并在Css中添加了页脚:

#website-footer {
    clear: both;
}

这解决了这个问题。

当我希望它们彼此相邻时,我通常会浮动这些元素。