Vant的Popup弹出层设置position为bottom后为什么只显示顶部一条线?
在用Vant3的Popup组件做底部弹出层时,设置了position="bottom",但弹出后只能看到内容区域顶部一条细线,里面的内容被压缩成高度0了。我检查过内容区域有固定高度和overflow设置,也试过加z-index:9999没用。
代码是这样的:
<van-popup
v-model:show="showPopup"
position="bottom"
style="height: 300px; background: white;"
>
<div class="content" style="height: 100%; overflow-y:auto">
这里的内容完全看不见
</div>
</van-popup>
控制台没有报错,但弹出层内容区域的高度就是不生效,只显示一条细线,点哪里都能关闭,但内容看不见。
safe-area-inset-bottom属性,再把position: fixed强制加上去。代码改成这样:还不行的话,检查下全局 CSS 有没有对
.van-popup或者body设置类似overflow:hidden或者transform的坑货样式。你现在的写法height: 300px是加在van-popup上的,但这个组件内部结构有包裹层,你的style根本没有生效到真正需要的地方。
正确的做法有两个:
第一种是直接给popup设高度用css类,别用行内style:
然后组件上加上class:
第二种更简单粗暴,直接用popup的height属性(文档里藏得挺深):
关键是不能依赖行内style去控制popup的高度,必须用class加!important或者用:style绑定。我当时就是因为图省事用行内样式,结果一直不生效,调试了快两个小时。