Разница в том, где находится граница.
Граница сидит SMACK DAB в середине полей и отступов. Если вы указываете поля, то это пробел за пределами границы.
Если вы укажете заполнение, то есть пробел ВНУТРИ границы (выталкивает границу дальше от элемента)
Не могу показать вас здесь из-за разборки css, но попробуйте это:
<body style="background-color: #aaa">
<p style="background-color: #aee; margin: 40px; padding: 40px; border: solid 2px black;">
i have margins, padding and a border.
</p>
<p style="background-color: #aee; margin: 40px; padding: 0; border: solid 2px black;">
i have margins, and a border.
</p>
<p style="background-color: #aee; margin: 0; padding: 40px; border: solid 2px black;">
i have padding and a border.
</p>
</body>
другие вещи!
отступы вносят фоновый цвет элемента, поля в основном прозрачные
некоторые элементы (например, td), кажется, игнорируют поля, в то время как они реагируют на изменения в заполнении