This post was originally posted on the 12th September 2010. Reposted since the domain name changed.
The “box” mentioned here are not a box, but a model that we define to look like a box in CSS, like the <textarea> where the width and height were assigned by us. But did you know that the width and height that you’ve assign, to combine with padding and border were outputted differently by all browsers including IE6?
The CSS box were rendered like this :
width + padding + border = actual visible/rendered width of box
height + padding + border = actual visible/rendered height of box
But, in IE6 it were treated differently in the “quirk” mode :
width = actual visible/rendered width of box
height = actual visible/rendered height of box
To make it clear, see the image below:

And below is the IE6 model of the box :

On my early days in CSS, I didn’t realize this is how browser render the CSS. I thought when I initialize it with a specific width and height, that’s what I see. Well, I forgot about padding and border size which unexpectedly expanding the “box” to a size that you not actually assign to it. So if you looking to design layout specific “box”, make sure you know how the “box” actually works and rendered so it won’t make your life hard.
The Workaround
With the CSS3 today, fortunately the real “box” model that have its border and padding that cut into its width, rather than expanding it can be achieve. Chris Coyier mention in his post, the sort of fix for this.
textarea {
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box; /* Firefox, other Gecko */
box-sizing: border-box; /* Opera/IE 8+ */
}
Though mind yourself, this is for the newly gen browser and IE6 together with IE7 is still facing a problem.