position: fixed 通常是把元素相对于页面的位置进行定位。
例:top: 30px, left: 20vw 就是在页面上方30像素,左侧20%长度的位置放置这个元素。
通常position: absolute就可以相对于第一个带有position: relative或者position: fixed的父级元素定位,若没有则相对页面定位.
但是position: absolute会有可能无法显示出来,比如某个父级元素的z-index太小了,则absolute的这个元素可能被其他元素遮挡,此时用fixed可以显示出该元素.
用fixed相对于父元素定位: position: fixed;
若有其他CSS的设定影响到了该元素以下属性,则用unset覆盖其他CSS的设定 left: unset; right: unset; top: unset; bottom: unset;
然后用transform: translate()来调整该元素位置。
例: position: fixed; transform: translateY(-20px); 该设定可以使得元素相对自身位置上移20像素的距离,从而实现position: fixed但是效果为position: relative
Update:
对于可以滚动的页面overflow: auto或者overflow: scroll,会有错位的情况,即:父级元素滚动走了,设置了fixed的元素还在页面原本的位置。
解决方法:例如用window.scrollY来看滚动条移动的距离,将这个距离赋值到之前提到的transform: translateY()中,保持元素与父元素同时位移相同的距离,保持相对静止。