我不确定你是否理解box-sizing:border-box
应该做什么。那个片段忽略标签怎么样?请解释您期望的行为以及这有何不同。
至于房产本身,我假设您已经环顾四周,您熟悉box-model。
例如,使用“普通”框模型向元素添加填充会将填充添加到元素的外部,但是,使用相同的填充box-sizing:border-box
会将填充添加到元素的内部,这将保留您的原始大小.
这可以在下面的jsFiddle中说明。
<style>
.one {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
width:50px;
height:50px;
padding:10px;
background-color:#3e3e3e;
}
.two {
width:50px;
height:50px;
padding:10px;
background-color:red;
}
<div class = "one">one1</div><div class = "one">one2</div><div class = "one">one3</div>
<div class = "two">two1</div><div class = "two">two2</div><div class = "two">two3</div>
这种情况需要确保您的数学是正确的,否则在不使用border-box 属性时可能会破坏您的样式。例如,如果您的<div>
s 将跨越页面的三分之一,您可以这样设置:
<style>
.one {
width:33%;
background-color:#3e3e3e;
float:left;
}
</style>
<div class = "one">one1</div>
<div class = "one">one2</div>
<div class = "one">one3</div>
http://jsfiddle.net/b4LNp/
这很好,但是不添加填充border-box
会导致 div 的总大小超过 33%(在本例中为 33% 宽度 + 1em 填充)。这将破坏您创建的列,因为它们现在太宽而无法并排放置。
<style>
.one {
width:33%;
background-color:#3e3e3e;
float:left;
padding:1em;
}
</style>
<div class = "one">one1</div>
<div class = "one">one2</div>
<div class = "one">one3</div>
http://jsfiddle.net/u4w5B/
使用border-box
will 代替将填充放在元素内部,将每个填充保持在 33% 并确保无论您如何间隔元素,它们都将保持您最初告诉它的宽度。这消除了对许多额外的、不必要的数学的需要。
<style>
.one {
width:33%;
background-color:#3e3e3e;
float:left;
padding:1em;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
</style>
<div class = "one">one1</div>
<div class = "one">one2</div>
<div class = "one">one3</div>
http://jsfiddle.net/u4w5B/1/
有关更多信息,请查看以下链接:
w3 box-model解释
Paul Irish 的建议*{box-sizing:border-box}
CSS 技巧 box-sizing
CSS3 中的 Hong Kiat 大小调整
希望有帮助!