Маржа применяется и расширяет / сжимает нормальную границу элемента, но когда вы вызываете top, вы игнорируете обычную позицию элемента и перемещаете его в определенную позицию.
Пример:
html:
<div id="some_element">content</div>
css:
#some_element {margin-top: 50%}
Означает, что элемент начнет отображать html на высоте 50% своего контейнера (т. Е. Div, отображающий слово «content», будет отображаться при 50%).высота содержащего его узла div или html непосредственно перед div # some_element), но если вы откроете инспектор вашего браузера (f12 для Windows или cmd + alt + i на mac) и наведете указатель мыши на элемент, вы увидите, что его границы выделены, и обратите внимание, что элемент имеетбыл сдвинут вниз, а не перемещен.
Верх с другой стороны:
#some_element {top: 50%}
Фактически переместит элемент, означающий, что он все равно будет отображаться на 50% его контейнера, но он будет переставленэлемент, так что его край начинается на 50% от содержащего его элемента.Другими словами, между краями элемента и его контейнером будет зазор.
Cheers!