vxe-modal根据弹窗高度、弹窗内容,自动改变弹窗位置

目录

  • 问题
  • 解决方法:通过$refs获取高度
  • 最终效果图(tab页点击切换,弹窗位置自适应)

问题

使用vxe-modal进行开发,当弹窗里存在el-tabs切换时,点击第二个tab页,因为第二个tab页里内容过多,弹窗的高度会自动增加,但是弹窗的位置并未改变,就会有部分内容被遮住。
弹窗显示(默认第一个tab页): 此时弹窗位置自适应
vxe-modal根据弹窗高度、弹窗内容,自动改变弹窗位置_第1张图片
点击第二个tab页: 弹窗高度增加,但弹窗位置未改变,页面内容显示不全
vxe-modal根据弹窗高度、弹窗内容,自动改变弹窗位置_第2张图片

解决方法:通过$refs获取高度

首先给vxe-table设置一个ref,并设置el-tabs点击事件
在这里插入图片描述
在el-tabs点击事件中进行处理:

handleClick(tab) {
   let modalBoxHeight; //弹窗的高度
   let pageHeight = document.body.clientHeight; //整个页面的高度
   //等待页面渲染完成后获取元素高度
   this.$nextTick(() => {
   	 //获取弹窗高度
     modalBoxHeight = this.$refs['vxeModal'].$refs.modalBox.offsetHeight; 
     //设置弹窗与整个页面顶部的距离
     this.$refs['vxeModal'].$refs.modalBox.style.top = (pageHeight - modalBoxHeight)/2 + 'px'; 
   })
 },

完成以上步骤即可达到tab页切换,弹窗位置自适应的效果
其中获取弹窗高度这一步,我也是在找解决办法时,通过$refs把元素打印到控制台,一步步找到的获取方法,目前来说,此方法可行。如有不适用,或有其他办法,欢迎各位道友评论分享!

最终效果图(tab页点击切换,弹窗位置自适应)

vxe-modal根据弹窗高度、弹窗内容,自动改变弹窗位置_第3张图片
vxe-modal根据弹窗高度、弹窗内容,自动改变弹窗位置_第4张图片

你可能感兴趣的:(vxe-table,前端,vue.js,javascript,前端)