Have you tried them? The main thing to keep in mind with margins and padding is that IE's implementation is broken, and puts padding inside the content box making the effective dimensions of the box (where the content goes) smaller, instead of outside as specified by the standard.
In other words, the total width of a box as specified by the CSS standard is
margin-left + border-left-width + padding-left + width + padding-right + border-right-width + margin-right
But IE measures it
margin-left + border-left-width + width + border-right-width + margin-right
With the effective width of the content being reduced by the amount of horizontal padding.
A similar botch-up happens vertically.
I added a bit of colour to your css to make the parts more visible:
dl {
width: 200px;
border:1px solid red;
margin: 0px 0px 20px 20px;
}
dt {
border:1px solid blue;
margin: 0px;
padding: 5px;
background: #ccf;
}
dd {
border:1px solid green;
margin: 0px;
padding: 5px;
background: #cfc;
}
, and attached a comparison of the two (IE above, Gecko below). Note how the IE box is slightly narrower (mainly due to the 1-pixel borders I added), and how the content is more tightly packed vertically.
However, rumour has it that IE7 might be better at getting this part of the standard right at long last.
One way of hacking this is to use the fact that IE doesn't fully implement CSS selectors. Give the "IE width" (i.e, the width you actually want, plus space for the padding) in the CSS rule:
dt{width:592; padding:0px 1px;}
and then add a rule specifying the element as a child of its parent, and put the real width in that:
dl>dt{width:590;}
IE will ignore that because it doesn't understand child selectors.