The original box model behavior was eventually considered unintuitive, so a new CSS property called box-sizing
was created. When you set box-sizing: border-box;
on an element, the padding and border of that element no longer increase its width. Here is the same example as the previous page, but with box-sizing: border-box;
on both elements:
.simple {
width: 500px;
margin: 20px auto;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.fancy {
width: 500px;
margin: 20px auto;
padding: 50px;
border: solid blue 10px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
We're the same size now!
</div>Hooray!
</div>Since this is so much better, some authors want all elements on all their pages to always work this way. Such authors put the following CSS on their pages:
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
This ensures that all elements are always sized in this more intuitive way.
Since box-sizing
is pretty new, you should use the -webkit-
and -moz-
prefixes for now, as I have in these examples. This technique enables experimental features in specific browsers. Also, keep in mind that this one is IE8+.