Vue | Element UI Plus 完美解决el-dialog双滚动条、页面抖动问题
<template>
<el-dialog
:visible="visible"
:append-to-body="true"
:lock-scroll="true"
@open="handleOpen"
@close="handleClose"
>
<!-- 内容 -->
</el-dialog>
</template>
<script>
export default {
props: {
visible: {
type: Boolean,
default: false
}
},
methods: {
handleOpen() {
// 防止页面滚动
this.scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
document.body.style.position = 'fixed';
document.body.style.top = `-${this.scrollTop}px`;
document.body.classList.add('dialog-open');
},
handleClose() {
// 恢复页面滚动
document.body.style.position = '';
document.body.style.top = '';
document.body.classList.remove('dialog-open');
document.body.scrollTop = document.documentElement.scrollTop = this.scrollTop;
}
}
};
</script>
<style>
.dialog-open {
overflow: hidden;
}
</style>
这个代码实例展示了如何在Vue中使用Element UI的el-dialog
组件时处理双滚动条和页面抖动的问题。通过监听对话框的打开和关闭事件,我们在handleOpen
和handleClose
方法中分别实现了禁用页面滚动和恢复页面滚动的逻辑,从而避免了这些问题。
评论已关闭