position元素定位
发布日期:2021-11-21 16:35:31 浏览次数:8 分类:技术文章

本文共 1145 字,大约阅读时间需要 3 分钟。

1.absolute:

生成绝对定位的元素,相对第一个非static的父元素进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

2.relative:

生成相对定位的元素,相对于其正常位置进行定位。
因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。

3.fixed:

生成绝对定位的元素,相对于浏览器窗口进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

4.static:默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。

5.inherit:规定应该从父元素继承 position 属性的值。

所有的定位如果left、top、right、bottom属性都为默认值,则为默认定位
absolute定位会脱离文档,浮动起来,多个层重叠可以使用z-index属性改变层叠顺序
absolute定位忽略padding,相对位置为相对定位容器的左上角内边框

 

6. sticky

设置了sticky的元素,在屏幕范围(viewport)时该元素的位置并不受到定位影响(设置是top、left等属性无效),当该元素的位置将要移出偏移范围时,定位又会变成fixed,根据设置的left、top等属性成固定位置的效果。
可以知道sticky属性有以下几个特点:
(1)该元素并不脱离文档流,仍然保留元素原本在文档流中的位置。
(2)当元素在容器中被滚动超过指定的偏移值时,元素在容器内固定在指定位置。亦即如果你设置了top: 50px,那么在sticky元素到达距离相对定位的元素顶部50px的位置时固定,不再向上移动。
(3)元素固定的相对偏移是相对于离它最近的具有滚动框的祖先元素,如果祖先元素都不可以滚动,那么是相对于viewport来计算元素的偏移量
要让sticky属性生效的条件有以下两点:
一个是元素自身在文档流中的位置
另一个是该元素的父容器的边缘
第一点上面已经讲过了,如果设置了top: 50px,那么元素在达到距离顶部50px时才会发生定位,否则并不会发生定位。
第二点则需要考虑父容器的高度情况:sticky元素在到达父容器的底部时,则不会再发生定位,如果父容器高度并没有比sticky元素高,那么sticky元素一开始就达到了底部,并不会有定位的效果。
此外还有一点就是父元素的overflow属性,如果父元素的overflow属性并不是默认的visible属性,那么sticky元素则相对于该父元素定位。也就是如果要定位在顶部的话,此时这个效果就无效了

转载地址:https://blog.csdn.net/yyychocolate/article/details/108048892 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:浏览器缓存机制
下一篇:使用display:inline-block会产生什么问题?解决方法?

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年03月17日 16时38分51秒