相对定位元素而不占用文档流中的空间

Web*_*ner 169 html css positioning css-position

如何相对定位元素,并且不占用文档流中的空间?

Nig*_*cat 266

你想要做的事情听起来像绝对定位.另一方面,您可以通过创建零宽度,零高度,相对定位的元素来创建伪相对元素,基本上仅用于创建位置的参考点,以及绝对定位的元素在那:

<div style="position: relative; width: 0; height: 0">
    <div style="position: absolute; left: 100px; top: 100px">
        Hi there, I'm 100px offset from where I ought to be, from the top and left.
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)


Fre*_*d K 91

添加等于您移动的像素的边距:

.box {
    position: relative;
    top: -30px; 
    margin-bottom: -30px;
}
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这个,因为它不需要任何额外的标记. (8认同)
  • 不知怎的,对我来说比其他答案更有意义 (5认同)
  • 这行得通吗?我正在 chrome 中尝试它,但似乎不起作用。我用它来定位来自 slidesjs 的导航按钮,所以这也可能会弄乱它。 (2认同)
  • 我用 `left: -25px; 尝试了这个 margin-right: -25px;` 由于某种原因,它仍然将同级元素水平偏移 2-3 个像素。 (2认同)
  • 请记住,对于正的“top:”值,您需要让“margin-bottom:”等于元素高度的负值而不是位移 (2认同)

jet*_*eon 20

从阅读起来,只要父元素相对定位,你似乎可以绝对定位一个元素.这意味着如果你有CSS:

.parent { 
    position: relative; 
}
.parent > .child {
    position: absolute;
}
Run Code Online (Sandbox Code Playgroud)

然后,子元素将不占用文档流中的任何空间.然后,您可以使用"left","bottom"等属性之一来定位它.父级的相对定位通常不会影响它,因为如果你没有指定"left","bottom"等,默认情况下它将被定位在其原始位置.

http://css-tricks.com/absolute-positioning-inside-relative-positioning/


Bek*_*caj 5

您只需通过设置 将该元素从文档流中取出,并通过指定和样式属性position: absolute,使其断点随内容的动态流自由移动,这将强制其动态使用流的相对端点。这样,绝对定位的元素将遵循文档流,同时消除自身占用的空间。left top rightbottom

不需要虚拟包装纸。

  • 这只适用于我们确实不打算使用坐标将绝对元素移动到任何地方的受限情况。这感觉不自然,因为它很可能与流程的下一个元素重叠。John T. [此处](/sf/answers/3460471871/) 举了一个例子,但建议设置一个坐标以将其移至一侧(如果我们愿意)。相对包装解决方案正是为了能够使用相对坐标,因此是否需要它取决于OP真正想要的。 (2认同)