CSS中 position 属性详解

本文详细解析了CSS中的position属性,包括relative、absolute和fixed三种定位方式。relative定位保持元素在流布局中的位置,通过偏移量调整;absolute定位相对于最近的非static祖先元素定位,若无则相对于body;fixed定位始终相对于浏览器窗口。通过实例展示了它们对元素布局的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.positon:relative

relative的相对偏移对象是他自己,即添加了relative属性的对象会以他原本应该所在的位置进行偏移。
不添加relative属性,下图中son1和son2在同一个div中,son3和son4在同一个div中,son5在一个div中,如图。


上图中son1和son3添加relative属性.son1{position: relative;top: 30px;left: 40px;} .son3{position: relative;top: 10px;left: 20px;},因此son1和son3会根据他们原本所在的位置进行偏移,如图。



***同一个块内的元素,son1添加了relative,son1发生偏移,son1的流布局位置依然保存,且不会影响son2元素的定位,son2依然会出现在正常的流布局位置中。

2.position:absoult

absolute的相对偏移对象分两种情况:

  • 父级或祖父级等也有absolute或者relative属性
  • 任意层父级无absolute或者relative属性。

添加了absoult属性的元素会丢失它原本在流布局中的位置,relative属性不会。

不添加position属性的原始布局如图,其中son6和son7在一个div中,son8合son9在一个div中。


①父级有absolute属性。

对当父级有该属性,则相对偏移位置为父元素偏移后所在位置为基准进行偏移。

对son6的父div1和son6添加absolute属性,son6设置偏移,son7不设置,结果如图:

son6发生了基于父元素位置的偏移,因为添加了absoult属性的元素,son6和父div1会丢失原本在流布局中的位置,因此父div2会排列到原本父div1的位置,son7会排列到原本son6的位置,因此发生了遮挡。

②父级有relative属性。

对son6的父div1设置relative属性,son6添加absolute属性,son6设置偏移,son7不设置,结果如图:

son6发生了基于父元素位置的偏移,因为添加了absoult属性的元素,son6会丢失原本在流布局中的位置,父div1的流位置并未丢失,son7会排列到原本son6的位置。


③任意层父级无absolute或者relative属性。

当无父级无该属性,则相对偏移位置以body为基准进行偏移。

只对son6添加absolute属性,设置偏移,son6发生了以body为基准的偏移。



son6父级无该属性,因此son6以body为基准偏移。
***同一个块内的元素,son6添加了absolute,son6发生偏移,son6实现了漂浮,失去了流布局位置,看起来像不受父元素约束,此时son7会接替son6的位置出现在正常的流中。

3.position:fixed

fixed是特殊的absoult,因为他总会以body进行偏移。

 

参考文章:https://blog.csdn.net/qq_34858648/article/details/74726044

代码:

https://codechina.csdn.net/qq_24915489/html/-/blob/a9ea35e1df585e7abc9e4a3380bcfabdc034b220/index_relative.html

https://codechina.csdn.net/qq_24915489/html/-/blob/a9ea35e1df585e7abc9e4a3380bcfabdc034b220/index_absolute.html

https://codechina.csdn.net/qq_24915489/html/-/blob/a9ea35e1df585e7abc9e4a3380bcfabdc034b220/index_fixed.html·

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值