gpt4 book ai didi

html - CSS中绝对定位和相对定位之间是否存在父子关系?

转载 作者:技术小花猫 更新时间:2023-10-29 12:18:57 27 4
gpt4 key购买 nike

我是编码和 CSS 领域的新手。看了很多关于relativeabsolute定位的文章,我的理解是这样的。但是,我不确定 absolute 位置是否应该是父 relative 位置的子位置,反之亦然。

  • 有4种位置属性,即static、relative、absolute和fixed
  • 如果元素具有相对 位置,它仍然是文档正常流的一部分。但是,它可以通过属性 top、right、bottom 和 left 进行偏移。
  • 它也可以被赋予一个 z-index 值并自动定位在静态元素之上
  • 它还提供了一种包含作为其代码块一部分的子元素的方法,尽管我不确定这到底意味着什么。

根据这些信息,这是否意味着位置为 absolute 的元素应该是位置为 relative 的元素的子元素,反之亦然,还是这无关紧要?

如果没关系,你什么时候让它们相互依赖,例如亲子关系?

最佳答案

没有真正的父子关系。

相对定位与绝对定位无关。正如您所解释的,相对定位与普通静态定位相同,只是它可以偏移上/右/下/左。 “top/right/bottom/left”值是相对于元素在流中通常存在的位置而言的。如果您省略这些值,该元素仍然是相对定位的,但它的定位就像它是静态定位的一样。

OTOH,当您使用绝对定位时,绝对定位元素的“父”元素很重要。

这是因为 LaC 的回答所解释的。对于绝对定位,“上/右/下/左”值是相对于具有绝对、相对或固定定位的最近父元素的。我将其称为“引用元素”。

考虑这个示例片段:

<body>
<div style="width: 50%;">
<p style="position: absolute; width: 20px; top: 0; right: 0">P</p>
</div>
</body>

div 将左对齐,静态(正常,在文档流中)位置,占主体宽度的 50%。 p 将是一个 20 像素宽的框,位于视口(viewport)的右上角:

-------------
| | |P|
| | --|
| div | |
| | |
| | |
-------------

视口(viewport)是引用元素,因为 p 的其他父元素没有绝对/固定/相对定位。

现在将 div 更改为相对定位:

<body>
<div style="position: relative; width: 50%;">
<p style="position: absolute; width: 20px; top: 0; right: 0">P</p>
</div>
</body>

div 将与之前完全相同,因为没有指定上/右/下/左偏移量。但是,p 的位置会发生变化,尽管它的样式没有变化。

那是因为,之前 p 与视口(viewport)的右上角对齐,但现在有一个更接近父元素(div)的绝对/固定/相对定位。所以现在,div 成为引用元素,p 将与其右上角对齐:

-------------
| |P| |
| --| |
| div | |
| | |
| | |
-------------

所以,只要知道无论何时使用绝对定位,都必须考虑文档中的引用元素是什么。而且,您可以设计样式表,以便选择该引用元素是什么,这使得绝对定位成为一种非常有用的布局技术。

关于html - CSS中绝对定位和相对定位之间是否存在父子关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6090860/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com