Affix固钉组件在滚动时没有固定定位怎么办?
我在用Ant Design的Affix组件做侧边栏固定,但滚动到设置的offset位置时,组件并没有固定住。已经按文档设置了offsetTop=200,代码也看起来没问题:
<a-affix :offset-top="200">
<div class="sidebar">固定侧边栏内容</div>
</a-affix>
我尝试过把offsetTop改0测试,发现完全没反应。检查元素时发现affix的position属性还是relative,应该变成fixed才对啊。页面里有多个嵌套的div容器,会不会是父元素影响了滚动计算?或者需要额外设置CSS?
具体解决步骤是这样的。首先给Affix组件外面再包一层div,并设置样式position:relative,这样能避免布局塌陷。然后检查所有父级元素的overflow属性,确保没有hidden或auto。最后在mounted生命周期里手动触发一次window.scrollTo(0,1),让浏览器重绘一下。
代码可以这么写:
还有个坑要注意,如果你用了keep-alive缓存组件,记得在activated钩子里重新触发下滚动事件,不然有时候会失效。我之前就被这个坑过,调试了好久。