You don't need to specify a width. A block level element will automatically fill 100% width so just put the margin on the element and leave off the width as it'll then readjust to cater for the extra margin
Hehe, yeah block level elements being 100% is something that's quite often overlooked
Sorry to pull you up on this Dave because I know what you mean but block level elements are not 100% width they are width:auto by default.
Whether auto means that they will stretch to fill the whole available space depends on the type of element concerned.
For example width:auto for floated and absolute elements means that the element will only be as wide as its content if no specific width has been set. For static elements (inc position:relative) then the width:auto will allow the element to fill all the available space and will not overflow when borders or padding are added (unless the dimensions are over constrained of course.)