不,它们不一样,使用position: relative;
保持元素在流动中,它只是移动元素position
但在物理上它在使用时在流程中保留了空间margin
它移动整个元素,影响使用移动的元素周围的元素margin
,在某些情况下这也会导致边距崩溃......
Demo http://jsfiddle.net/He88F/ (position: relative;
)
Demo http://jsfiddle.net/Eb3eZ/ (with margin
)
CSS 定位如何工作?我刚刚解释过here https://stackoverflow.com/questions/20718577/how-css-positions-work-why-absolute-elements-stack-up-on-each-other-instead-of/20718728#20718728几分钟前
Also, margin
和定位完全是两个不同的东西,定位是一个很大的概念,margin
完全不同,定位不会影响您的盒子模型,其中margin
是的,边距用于分隔元素,例如inline-block
元素,或者说您需要在段落上方和下方留出一些空间,它们并不意味着position
元素等...
如果你看到这个
边距占据元素周围的区域,即如果元素是50px
in width
你用margin
of 10px
, 它需要10px
在所有方面,所以它实际上会让你的元素占据70px
总共,50px => width + 10px => left margin + 10px => right margin
,其中使用position
,它不会扩大或缩小元素周围的区域,它只是改变position
该元素可能会或可能不会影响页面上的其他元素,具体取决于position
然而margin
改变盒子模型,因此,它也会影响position
其他元素,例如static
and relative
.
Also, margin
不垂直应用于inline
元素,这样如果您应用margin
to span
或任何其他inline
元素说a
, margin
将仅水平拍摄而不是垂直拍摄,为此,您必须将它们制作为inline-block
or block
水平元素。
了解更多信息,你可以阅读我在另一个问题上的回答 https://stackoverflow.com/questions/11700985/margin-top-not-working-for-span-element/11700999#11700999。而你可以申请position: relative;
对于任何元素,无论block
, inline
or inline-block
它会position
元素按照您想要的方式...