任何一个可以告诉我之间的差异style = "position:absolute"
和style = "position:relative"
以及它们如何在不同的情况下,我把它添加到div
/ span
/ input
元素?
我现在正在使用absolute
,但是我也想探索relative
。这将如何改变定位?
任何一个可以告诉我之间的差异style = "position:absolute"
和style = "position:relative"
以及它们如何在不同的情况下,我把它添加到div
/ span
/ input
元素?
我现在正在使用absolute
,但是我也想探索relative
。这将如何改变定位?
Answers:
绝对定位是指元素完全从页面布局的正常流程中移出。就页面上的其余元素而言,绝对定位的元素根本不存在。然后,元素本身是单独绘制的,在所有其他内容的“顶部”,在您使用left, right, top and bottom
属性。
使用您使用这些属性指定的位置,该元素将被放置在其最后一个祖先元素内的那个位置,该元素的位置属性不是static
((未指定位置属性时的页面元素默认为静态))或文档主体(浏览器)以外的任何位置属性。视口)(如果不存在这样的祖先)。
例如,如果我有以下代码:
<body>
<div style="position:absolute; left: 20px; top: 20px;"></div>
</body>
... <div>
应位于距浏览器视口顶部20px处,距浏览器左边缘20px处。
但是,如果我做了这样的事情:
<div id="outer" style="position:relative">
<div id="inner" style="position:absolute; left: 20px; top: 20px;"></div>
</div>
...然后将inner
div从outer
div 的顶部定位20px,从其顶部向左定位20px ,因为outer
div的位置不是position:static
因为我们已将其明确设置为use position:relative
。
另一方面,相对定位就像根本没有任何定位一样,只是left, right, top and bottom
属性将元素“推”出了其正常布局。页面上的其余元素仍然会布局,就像该元素位于其正常位置一样。
例如,如果我有以下代码:
<span>Span1</span>
<span>Span2</span>
<span>Span3</span>
...然后全部三个 <span>
元素将彼此相邻而不会重叠。
如果将第二个设置<span>
为使用相对定位,则如下所示:
<span>Span1</span>
<span style="position: relative; left: -5px;">Span2</span>
<span>Span3</span>
...那么Span2将与Span1的右侧重叠5像素。Span1和Span3与第一个示例位于完全相同的位置,在Span2的右侧和Span3的左侧之间留有5px的间隙。
希望能使事情澄清一点。
好吧,这里的答案很明显...基本上相对位置是相对于上一个元素或窗口的,而绝对不关心其他元素,除非您使用顶部和左侧,否则它是父元素...
查看我为您创建的示例以显示差异...
您还可以使用我为您创建的css来查看它的运行情况,还可以看到绝对位置和相对位置的行为:
.parent {
display: inline-block;
width: 180px;
height: 160px;
border: 1px solid black;
}
.black {
position: relative;
width: 100px;
height: 30px;
margin: 5px;
border: 1px solid black;
}
.red {
width: 100px;
height: 30px;
margin: 5px;
top: 16px;
background: red;
border: 1px solid red;
}
.red-1 {
position: relative;
}
.red-2 {
position: absolute;
}
<div class="parent">
<div class="black">
</div>
<div class="red red-1">
</div>
</div>
<div class="parent">
<div class="black">
</div>
<div class="red red-2">
</div>
</div>
相对的:
元素position: relative;
的位置相对于其正常位置。
如果您在相对元素上未添加任何定位属性(顶部,左侧,底部或右侧),则将对其位置完全没有影响。它将完全像一个position: static
元素一样工作。
但是,如果您确实添加了其他定位属性,例如top:10px ;,则会将其位置从正常位置向下移10个像素。
具有这种定位类型的元素会受到其他元素的影响,并且它本身也会影响其他元素。
绝对:
元素带有position: absolute;
允许您将任何元素精确地放置在所需位置。您可以使用定位属性top,left,bottom。并有权设置位置。
相对于最近的非静态祖先放置。如果没有这样的容器,则将其相对于页面本身放置。
它已从页面上正常的元素流中删除。
具有这种定位类型的元素不会受到其他元素的影响,也不会影响其他元素的流动。
请参阅此不言自明的示例,以获取更好的清晰度。https://codepen.io/nyctophiliac/pen/BJMqjX
位置:相对充当父元素位置:绝对充当相对位置的子元素 。您可以看到以下示例
.postion-element{
position:relative;
width:200px;
height:200px;
background-color:green;
}
.absolute-element{
position:absolute;
top:10px;
left:10px;
background-color:blue;
}