问题与分析
经过网上的一番搜索,找到了一下原因:
sticky不生效原因:
overflow:hidden;
overflow-x: hidden;
overflow-y: hidden;
overflow:auto;
overflow-x:auto;
overflow-y:auto;
但是,看到这个答案,又自然而然有两个疑问
(1)为什么overflow:hidden/auto 导致sticky不生效?
overflow:auto 会导致sticky期望父元素的滚动,而开发者期望基于主页面的滚动,并且这个问题是很难被发现的。
hidden直接让父元素无法滚动,auto在父元素高度足以容纳内容时也不会进行滚动,所以开发者(me)没有发现sticky的期望变了,还在傻傻的期望基于主页面的滚动。
明白这点后,我们就知道overflow:scroll也会产生同样的问题。可能一些不常用overflow属性也是这样,这里就不再钻牛角尖了,我们只需要明白sticky期望父元素的滚动,而开发者却期望基于主页面的滚动这点即可。
(2)overflow-y会影响sticky垂直滚动吗?
会,overflow-y:hidden改变overflow-x的值。
总结
sticky元素的父元素设置overflow:hidden/auto/scroll等属性 会导致sticky期望父元素的滚动,而开发者却期望基于主页面的滚动。