Advanced Margin versus Padding Explained
It is inappropriate to use padding
to space content in an element; you must utilize margin
on the child element instead. Older browsers such as Internet Explorer misinterpreted the box model except when it came to using margin
which works perfectly in Internet Explorer 4.
There are two exceptions when using padding
is appropriate to use:
It is applied to an inline element which can not contain any child elements such as an input element.
You are compensating for a highly miscellaneous browser bug which a vendor *cough* Mozilla *cough* refuses to fix and are certain (to the degree that you hold regular exchanges with W3C and WHATWG editors) that you must have a working solution and this solution will not effect the styling of anything other then the bug you are compensating for.
When you have a 100% width element with padding: 50px;
you effectively get width: calc(100% + 100px);
. Since margin
is not added to the width
it will not cause unexpected layout problems when you use margin
on child elements
instead of padding
directly on the element.
So if you're not doing one of those two things do not add padding to the element but to it's direct child/children element(s) to ensure you're going to get the expected behavior in all browsers.