我遇到这样的情况,当用户向下滚动时,侧边栏的一部分得到固定位置,但是当我抓住位置并将固定 css 应用于侧边栏元素时,它被固定到整个屏幕,而不仅仅是父级(侧边栏)
如何正确设置?
首先了解定位:
固定定位或 [ position:fixed ]
具有固定位置的元素相对于浏览器窗口定位。
相对定位OR [ position:relative ]
相对定位的元素是相对于其正常位置定位的。
绝对定位OR [ position:absolute ]
绝对位置元素相对于第一个具有非静态位置的父元素定位。
因此,在您的情况下,您的父母div
应该拥有position:relative
,而您的孩子div
应该拥有position:absolute
而不是position:fixed
通过阅读您的问题,我假设您有这样的事情:
<div class="sidebar">
<div class="fixed" style="position: fixed;"></div>
</div>
不幸的是,正如您现在可能知道的那样,top
, left
,right
或bottom
将始终相对于浏览器窗口在positon: fixed
元素上起作用。
解决方案是用另一个 div 包装你的.fixed
div,并在同一个包装器上而不是在 div 上做所有的定位.fixed
。让我演示一下:
的HTML:
<div class="sidebar">
<div class="helper">
<div class="fixed"></div>
</div>
</div>
CSS:
.sidebar {
position: relative;
}
.helper {
position: absolute;
top: XYZ; left: ZYX; /*where XYZ and ZYX would
be the values you were
trying before to give to .fixed*/
}
.fixed {
position: fixed;
}
在这个小提琴中看到它的实际效果:http: //jsfiddle.net/joplomacedo/T2PL5/
这个插件正是你需要的