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

问题

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

解决方法:通过$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页点击切换,弹窗位置自适应)

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值