在移动端用el-dialog弹窗时,设置固定高度后内容总是溢出屏幕,试过设置max-height: 100%也不行,滚动条还卡在对话框边缘。
代码这样写的:
<el-dialog :visible="showModal" style="height: 300px">
<div class="content">
</div>
</el-dialog>
在手机端测试时发现,当内容超过屏幕高度,底部会被遮罩层截断。用开发者工具模拟移动端时,发现弹窗的实际高度不受父容器影响,但文档里写应该支持百分比高度…
关键点是:不要设 height,用 max-height + overflow 控制内容区域。
模板改成这样:
CSS 这样写(重点是 dialog-body 的 overflow):
原理就是:让 el-dialog 自动适应内容高度,但限制最大高度为视口的 90%,把滚动交给 el-dialog__body,这样底部就不会被遮罩截断,也不会卡在边缘。
如果还是卡,加一句:
隐藏滚动条但保留滚动能力,移动端体验更顺滑。
记住:永远别在 el-dialog 上直接写 height:xxx px,移动端就用 max-height + vh 单位。
el-dialog的样式默认是基于固定高度的,而百分比高度在这种场景下可能会失效。我的解决办法是通过动态计算屏幕高度来设置弹窗的最大高度,并且让内容区域支持滚动。你可以试试下面的写法:
然后加一点样式调整:
这样改完之后,弹窗的高度会根据屏幕大小动态调整,内容区域如果超出也会自动出现滚动条,不会卡在对话框边缘了。
还有一点需要注意,如果你用的是 Vue 3,记得检查
custom-class是否生效,有时候需要手动引入样式。希望能帮到你!