静态和相对位置之间的差异


Answers:


167

静态定位是元素的默认定位模型。它们显示在页面中,作为标准HTML流程的一部分呈现。静态定位的元素不服从lefttoprightbottom规则:

静态放置的元素遵循正常的HTML流程。

相对定位,可以指定一个特定的偏移量(lefttop等等),这是相对于在HTML流动的元件的正常位置。因此,如果我的文本框内有一个文本框,则div可以在文本框上应用相对位置,以使其显示在相对于通常放置在的位置的特定位置div

相对放置的元素遵循HTML流,但是提供相对于HTML流中的常规位置调整其位置的功能。

还有绝对定位-您可以在其中指定元素相对于整个文档的确切位置,或者在元素树中指定下一个相对定位的元素

绝对定位的元素从HTML流中删除,可以定位在文档中的特定位置...

当将aposition: relative应用于层次结构中的父元素时:

...或相对于HTML树中相对定位的第一个父元素定位。

请注意,绝对位置元素是如何由相对位置元素绑定的。

最后是固定的。固定位置将元素限制在视口中的特定位置,该位置在滚动过程中保持在原位:

固定位置的元素也将从HTML流程中删除,但不受视口的约束,并且不会随页面滚动。

您可能还会观察到固定位置的元素不会导致滚动的行为,因为它们不被视口绑定:

固定位置的元素对滚动没有影响。

而绝对放置的元素仍受视口约束,并会导致滚动:

绝对定位的元素仍然会受到视口边界的影响,除非在父元素上使用了溢出。

..除非您的父元素当然overflow: ?用来确定滚动的行为(如果有)。

通过绝对定位和固定定位,可以将元素从HTML流中删除。


4
好的答案,但是(相对位置)偏移量不是基于元素的正常位置吗?
Baztoune

4
我同意Baztoune的观点,这种相对定位的元素的定义具有误导性。Astaticrelative元素相同,除了后者可以将其相对于其原始位置而不是相对于包含元素重新定位(即出现的位置absolute)。而且,就像任何使用值之外的元素定位一样,static您都可以使用z-index
瑞安·威廉姆斯

我对这个答案进行了重新设计,以更准确地定义相对位置,并包含图像以演示不同的位置类型。
马修·阿伯特

3
我想知道为什么CSS仍将实现position: static;而不是简单地将其替换position: relative;为默认值?如果您不想放置其他物品top: 0;left: 0;那么我们就不做吧,对吧?是否存在position: static;作为CSS一部分仍需要的基本原因?
cram2208

8
@ cram2208,因为relative使子元素的绝对定位的节点相对于其定位,因此static允许绝对定位的子元素忽略其位置,并相对于最近的相对定位的元素定位。它具有重要的概念
-Felype

7

您可以在这里看到一个简单的概述:W3School

另外,如果我没记错的话,在声明一个相对的元素时,默认情况下它会保留在其他位置,但是您可以相对于此元素将元素相对于其中的绝对位置定位,这对我来说非常有用在过去。


29
w3schools ...我不会拒绝投票,但您必须忍受耻辱。
迈尔斯·格雷

4
同时,在2017年,W3Schools并没有以前那么糟糕(虽然还不算完美,但是他们认真对待社区的强烈反对并得到了改善)。
Priidu Neemre'2

同时,在2018年,W3Schools仍然没有以前那么糟糕,但令他们感到难过的是,即使在今天,他们的声誉仍然如此,以至于向其他开发人员提及上述第一条评论时,仍然是经典的笑话...返回在我今天... W3School ....第一印象嘿...
redfox05 '18

7

回答“为什么CSS仍将实现位置:静态;” 在一个场景中,为父级使用position:relative和为子级使用position:absolute限制子级的缩放宽度。在水平菜单系统中,您可能会有链接的“列”,使用“ width:auto”不适用于相对的父级。在这种情况下,将其更改为“静态”将允许宽度根据其中的内容而变化。

我花了好几个小时,想知道为什么我不能让我的容器根据其中的内容量进行调整。希望这可以帮助!


这就是答案!每个人都只告诉专业人士相对的位置,却错过了这样一个问题的要点:有什么区别。
巴蒂斯·阿隆(BartisÁron)

5

相对位置允许您使用上/下/左/右进行定位。除非使用margin参数,否则Static不允许您这样做。Top和margin-top之间有区别。

您无需使用太多静态值,因为它是默认值



2

Matthew Abbott有一个很好的答案。

绝对和相对定位的项服从topleftrightbottom命令(偏移),其中静态定位的内容没有。

相对定位的项目会偏离它们通常在html中的位置。

绝对定位的项目将偏移文档或DOM树中下一个相对定位的元素。


0

静态: 静态位置元素是我们通过DEFAULT(对象的正常位置)获得的。

相对: 相对于当前位置,但可以移动。或相对定位元素相对于ITSELF定位。


0

静态和相对是位置属性。相对用于许多用途。不适合一个。但是请记住,静态和相对不会损害HTML的正常文档流程。当您将任何元素写入HTML时,static是默认位置。如果元素具有相对位置,则该元素可以相对于其原始位置进行定位。当您想从较小的空间调整元素时,请使用相对位置,这样,如果元素具有相对位置且具有子元素,则无需添加边距,填充等。在这里,我们可以相对于其父级进行测量。如果为子级添加10%的宽度,则意味着(width + padding)x10%。但是如果不添加相对关键字,则得到的宽度为10%。除此之外,亲戚最重要的用法是:您可以将任何元素置于其顶部。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.