我遇到的情况是,当用户向下滚动时,侧边栏的一部分会获得固定位置,但是当我抓住位置并将固定的css应用到侧边栏元素时,它会固定到整个屏幕,而不仅仅是父级(是边栏)
如何正确设置?
答案 0 :(得分:12)
首先了解定位:
固定定位或[位置:已修复]
具有固定位置的元素相对于浏览器窗口定位。
相对定位或[位置:相对]
相对定位元素相对于其正常位置定位。
绝对定位或[位置:绝对]
绝对位置元素相对于第一个具有静态位置的父元素定位。
因此,在您的情况下,您的父母div
应该有position:relative
而您的孩子div
应该有position:absolute
而不是position:fixed
答案 1 :(得分:7)
从阅读你的问题我认为你有这样的事情:
<div class="sidebar">
<div class="fixed" style="position: fixed;"></div>
</div>
不幸的是,您现在可能知道,top
,left
,right
或bottom
将始终相对于positon: fixed
元素上的浏览器窗口。
解决方案是用另一个div包装你的.fixed
div,然后在同一个包装器上完成所有的定位,而不是.fixed
div。让我演示一下:
HTML:
<div class="sidebar">
<div class="wrapper">
<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/
答案 2 :(得分:0)
制作父position: relative
,然后其子级将其用作absolute
定位的参考。有关详细信息,请参阅Definition of "containing block"中的CSS 2 specs。
关于fixed
定位:如何修复任何东西(这意味着固定在视口上)但仍然相对于其他某个元素,而这些元素又不固定到视口?这似乎与我相矛盾,这就是我第一次误解你的问题的原因。
答案 3 :(得分:0)
This plugin正是您所需要的