vue项目全屏功能及局部全屏下使用ant-design-vue中弹框类组件不展示

ant-design-vue中弹框类组件不展示

适用对象

比如组件中的modal,menu,message,notification,以及一些form下拉组件等

问题

在全屏以及局部全屏情况下,使用ant中带下拉框及模板的组件会导致不显示

全屏功能

此处我封装的js文件,也可单独写函数使用

// 进入全屏
/**
	domName:需全屏的DOM元素
*/
//局部打开全屏我单独写的,但这个文件中的退出及判断全屏可引入使用
export function fullScreen(domName) {
    // let el = document.getElementById(domName)//会导致模板被覆盖问题
    //在模板掩盖时用document.documentElement此处代码可解决全屏问题
    let el = document.documentElement;
    let rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullscreen;
    if (typeof rfs != "undefined" && rfs) {
        rfs.call(el);
    };
    return;
}
//退出全屏
export function exitScreen() {
    if (document.exitFullscreen) {
        document.exitFullscreen();
    }
    else if (document.mozCancelFullScreen) {
        document.mozCancelFullScreen();
    }
    else if (document.webkitCancelFullScreen) {
        document.webkitCancelFullScreen();
    }
    else if (document.msExitFullscreen) {
        document.msExitFullscreen();
    }
    if (typeof cfs != "undefined" && cfs) {
        cfs.call(el);
    }
}
// 判断是否为全屏
export function fullscreenElement() {
    var fullscreenEle = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;
    // console.log(fullscreenEle);
    return fullscreenEle;
}

页面引用

  import { fullScreen, exitScreen,fullscreenElement} from '@/utils/fullscreen'
  //键盘esc关闭全屏监控
  mounted() {
      let that = this
       window.onresize = function(){
        setTimeout(()=>{
            if(!fullscreenElement()){
                that.isFullScreen = false
            }
        })
      };
    },
  //使用
      screenClick(){
      	this.isFullScreenType = !this.isFullScreenType //控制页面icon展示
        if (!isFullScreen('contentAll')) {
          fullScreen('contentAll');
        } else {
          exitScreen();
        }
      },

解决

整个页面全屏解决
将fullScreen函数中el的获取替换

let el = document.getElementById(domName)
替换为
let el = document.documentElement;

局部全屏解决
可在页面单独使用全屏函数
在全局对元素进行设置
 //在main.js中修改
 //单独引用需修改的元素
 import { message,notification,Select } from 'ant-design-vue'
 //message和notification一样,有config属性可修改,全局设置属性如下:
	message.config({
	  maxCount: 3,
	  getContainer:() => document.getElementById('contenbox') //此为重点
	});
//页面上标签的使用灭有config属性,则用以下方法
Select.props.getPopupContainer.default = triggerNode => {
  return triggerNode.parentNode || document.getElementById('contenbox')
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值