overflow属性sticky不生效的原因


问题与分析

经过网上的一番搜索,找到了一下原因:

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期望父元素的滚动,而开发者却期望基于主页面的滚动


文章作者: iamfugui
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 iamfugui !
评论