17

如何在不添加预定义宽度的情况下向元素添加填充?

最好定义一列的宽度来为布局创建一个干净的网格;但也想为列内的内容添加填充。有什么方法可以指定吗?

4

4 回答 4

28
element { 
    -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
    -moz-box-sizing: border-box;    /* Firefox, other Gecko */
    box-sizing: border-box;         /* Opera/IE 8+ */
}
于 2013-03-13T10:47:48.257 回答
11

使用 box-sizing,它使填充包含在内: https ://developer.mozilla.org/en-US/docs/CSS/box-sizing

例子:

div {
    box-sizing:border-box;
    -moz-box-sizing:border-box; /* Firefox */
    -webkit-box-sizing:border-box; /* Safari */
}

值得注意的是,这不适用于 IE7。

对于 IE8,请参阅此问题的最佳答案:box-sizing:border-box => for IE8?

于 2013-03-13T10:48:02.593 回答
3

每次向块元素添加填充时,该元素的宽度都会发生变化。这个问题有很多解决方案。我通常设置margin为第一个子元素并width: 100%为此元素设置。

例如,我们有:

<div id="main">
    <div id="child">
        This is content with margin
    </div>
</div>

这些元素的 CSS 样式:

#main {
    border: solid 1px red;
    float: left;
    width: 5em;
}

#child {
    border: solid 1px blue;
    float: left;
    width: 100%;
    margin: 0.5em;
}

这是任何浏览器的解决方案

于 2013-03-13T11:19:24.540 回答
0

这是一个旧线程,我知道。但是上次我有一个完整的黑洞,关于制作一个没有设置宽度和填充的 DIV,所以它不会炸毁我的 3 列行和 CSS2。所以我放了一个左浮动的DIV,右浮动的DIV,在它们之间放置一个没有浮动且没有固定宽度的DIV,但我想在其中添加填充。那个怎么样...

我放弃了。:D 但我在中间放了一个内部 DIV 并给它 width=90%。到目前为止一切顺利,这是一个非常简单但不是很好的解决方案,但有时它有助于实现您需要的外观。;]

br

于 2015-02-23T00:11:58.717 回答