解决Vuetify v-menu组件在滚动父容器内表现为fixed定位的问题
问题表现
Vuetify的v-menu组件存在一个长期未解决的问题:
- 默认情况下弹出层与激活器物理“分离”,被创建为
v-app的子元素,避免被带有overflow: hidden样式的父DOM节点裁剪;但这会导致当激活器处于滚动容器内部时,弹出层表现为position: fixed效果——即不会跟随激活器滚动,视觉上脱节,仿佛“悬浮”在页面上方。 - Vuetify维护团队确认了该问题,并建议使用
attach属性解决,但使用该属性时十有八九会出现弹出层位置计算错误的情况。
修复思路
经过2小时调试,最终放弃使用attach属性,改为追踪激活器所在父容器的滚动位置,在计算弹出层位置时将该数值纳入参考。该方案运行稳定,无裁剪或错位问题,希望后续能被并入Vuetify主流版本。
内容的提问来源于stack exchange,提问作者IVO GELOV
相关产品推荐
相关产品推荐

