静态元素和左侧和顶部的相对元素之间是否存在差异?

bbu*_*ser 16 css

块元素position: relative;通常用作绝对定位元素的包含元素.当我没有这样的块元素时,我通常将静态元素更改为相对元素.这是否会改变除了能够作为绝对定位元素的容器的元素之外的任何其他内容?

块与之间是否存在差异?

position: static;
Run Code Online (Sandbox Code Playgroud)

position: relative;
left: 0;
top: 0;
Run Code Online (Sandbox Code Playgroud)

除了上面提到的那个?

Mat*_*aic 12

  1. Relative元素可以利用z-indexstatic不能.

  2. Top,right,bottom,left有没有影响static定位的元素.

  3. IE7需要relative元素的位置才能使用overflow.关于此问题的过去堆栈溢出问题.另外,Jonathan Snook发表了这篇文章.


Dan*_*eld 2

我能想到的一个区别是

具有的元素position:relative将尊重该z-index属性。

演示

编辑:

正如已经提到的,偏移属性top,left,bottom,right仅适用于定位元素(而不是静态元素)

这是在相对定位的元素中使用此偏移量的一个(不直观的)应用程序 - 这也可能会影响您决定在position:relative元素上设置时。

注意top:0;left:0:当offset为0(即问题中提到的)时,这不会被表达,但在使用时要意识到这一点很重要position:relative

规格来看

以这种方式偏移框 (B1) 对后面的框 (B2) 没有影响:B2 被赋予一个位置,就好像 B1 没有偏移一样,并且在应用 B1 的偏移后,B2 不会重新定位。这意味着相对定位可能会导致框重叠。

看看这个演示

您可以看到,当我在静态元素上放置边距时 - 它影响了以下p元素,但是当我在相对元素上使用定位时 - 以下p元素保持不变。

  • 我不明白编辑与问题有什么关系。您正在将非定位元素上的上边距与相对定位元素上的顶部偏移量进行比较 - 当然,行为会有所不同,因为它们是两个完全不同的东西。真正解决这个问题的更好的比较是比较两个元素的上边距 - 但正如您将看到的,[没有区别](http://jsfiddle.net/BoltClock/bVneZ/8)。 (2认同)