浏览器在局部区域全屏下,UI部分弹窗组件无法正常显示的问题

news/2025/3/14 19:43:10/文章来源:https://www.cnblogs.com/xinheng/p/18235649
import screenfull from 'screenfull'

  

// 全屏
handleScreen() {//screenfull.isEnabled  此方法返回布尔值,判断当前能不能进入全屏if (!screenfull.isEnabled) {return false}//screenfull.toggle 此方法是执行全屏化操作。如果已是全屏状态,则退出全屏screenfull.toggle(this.$refs.fullscreen)
},

使用screenfull.js将特定区域局部全屏,全屏状态下,服务器推送消息,前端使用Notification组件弹窗显示。

局部全屏下,收到推送消息时,不能正常显示,需取消全屏才能看到。

elementUI的Notification组件是插入了body中,局部全屏状态下,把body界面覆盖,故无法正常显示。经测试,即使将Notification组件的层级改变为z-index:9999, 亦无法显示。(基本上所有的组件都是插入当前页面或者body上的)

 

解决方案:

将需要全屏的div节点传入screenfull中会导致通知无法显示,不如就将body直接全屏,再通过改变CSS使这个div全屏显示,当取消全屏时,再将这个div恢复到原位置。

<div
ref="fullscreen"
:class="{'full':isFull}"
id="test"
@mousemove="get"
:style="{'left':fastartLeft+'px','top':fastartTop+'px'}"><el-button type="primary" icon="el-icon-full-screen" circle @click="handleScreen"></el-button><el-button type="danger" icon="el-icon-delete" circle @click="closeNotice"></el-button><!-- <h1>测试实现移动和拖拽</h1> --><p>鼠标坐标:</p><p>{{left}}</p><p>{{top}}</p><p>移动元素的坐标</p><p>{{positionx}}</p><p>{{positiony}}</p><div id="son"@mousedown="move" :style="{'left':positionx+'px','top':positiony+'px'}"><p>元素可移动</p></div>
</div>

  CSS
注意:full中z-index关键,必须小于2000,因为Notification组件默认z-index为2000

.full{position:fixed !important;z-index:200;top: 0;left: 0;right: 0;bottom: 0;width: 100%;height: 100% !important;
}

isFull为当前全屏状态,为布尔值

data(){return{isFull:false}
},
created(){this.init()
},

进页面初始化,监听全屏状态并赋值给isFull,isFull为true时,动态给div添加样式full

init(){if (screenfull.isEnabled) {screenfull.on('change',this.change)}
},
change(){this.isFull = screenfull.isFullscreen// console.log(this.isFull)
},

  将body全屏,传入body节点

// 全屏
handleScreen() {//screenfull.isEnabled  此方法返回布尔值,判断当前能不能进入全屏if (!screenfull.isEnabled) {return false}const bodyNode = document.querySelector('body')//screenfull.toggle 此方法是执行全屏化操作。如果已是全屏状态,则退出全屏screenfull.toggle(bodyNode)
},

  没有全屏下的页面

 此div全屏下,通知可正常显示,成功解决!

 我也是实际在项目中碰到了这种问题,最终查询资料得以解决:此方案可适用于不同ui库,本人使用的antd ui

本文引自这位老哥博客:解决浏览器在局部区域全屏下,elementUI部分弹窗组件无法正常显示的问题,如Notification,Message等_vue 局部全屏 this.$confirm显示不出来-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/721026.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

word如何转换成pdf?这4种方法超实用!

在处理文档时,将Word文档转换为PDF格式是一种常见的需求。PDF格式具有跨平台、保持原始格式等优点,使得在不同设备和操作系统上查看和打印文档时保持一致性。那么word怎么转换成pdf呢?本文将介绍四种将Word文档转换为PDF的方法,以满足不同用户的需求。 方法一:使用Word自带…

农业科技的丰收革命:农情监测系统引领农业数字化转型的浪潮

在科技飞速发展的今天,农业领域正经历着一场深刻的智能化、数字化变革。在这场变革中,农情监测系统以其独特的优势,成为推动农业转型升级的重要力量。它利用先进的物联网技术和云端平台,实现了对农业环境、病虫害等关键信息的实时、精准监测,为农业生产提供了强大的数据支…

智慧运维,安全无忧:体验全新的机房管理方案

在数字化飞速发展的今天,机房作为信息时代的“心脏”,其稳定运行对于企业的业务连续性至关重要。然而,传统的机房运维模式面临着诸多挑战,如响应速度慢、故障定位难、资源浪费大等问题。智慧机房运维系统,它将以智能化、自动化的方式,为机房运维带来革命性的变革。在数字…

OTA打包

./mk xxxxxxxxxxxx otapackage source build/envsetup.sh 启动编译脚本 lunch xxxxxxxxxxxx ota 升级打包 (项目有特制签名看着改) ./build/tools/releasetools/ota_from_target_files -k device/mediatek/security/releasekey -i a1.zip a2.zip update_8023.zip ./build/t…

戴尔R720服务器(4)虚拟机性能测试

物理机环境机型 戴尔R720系统环境 PVECPU E5-2660V2 2.2GHz 双路内存 1333MHz 单通道内存 1333MHz 双通道硬盘 用6块转速1万的2.5寸盘组的RAID5,使用了H310mini阵列卡‍测试工具:Sysbench。一个跨平台的基准测试工具,用于评估系统性能,包括CPU、内存、文件系统和数据库性…

玄机应急响应-第一章

第一章 应急响应-webshell查杀 查杀方法1:d盾查杀查杀方法2:grep -nr "eval" .` 一,黑客webshell里面的flag flag <?php @session_start(); @set_time_limit(0); @error_reporting(0); function encode($D,$K){for($i=0;$i<strlen($D);$i++) {$c = $K[$i+1&am…

Alist个人自用自定义头部及内容

自定义头部:\3c p>/* 去除通知栏 右上角 X */\3c br> .notify-render .hope-close-button { } \3c /p> \3c p>/\3c em>白天背景图\3c /em>/\3c br> .hope-ui-light { } \3c br> /\3c em>夜间背景图\3c /em>/\3c br> .hope-ui-dark { } \3c br…

5. 三重积分

掌握三重积分的定义,以及计算方法(如何将三重积分化为累次极分:穿线法和切片法)。掌握三重积分的换元法(柱面坐标变换和球面坐标变换)。 重点习题:例1、例3、例4-例6 注意:柱面坐标变换适用于积分区域为圆柱或圆柱的一部分,球坐标变换适用于积分区域为球或球的一部分,…

有哪些好用的私有化部署即时通讯软件?

随着企业信息化建设的深入,越来越多的企业开始重视数据安全和内部沟通的效率。在这样的背景下,私有化部署即时通讯软件成为了众多企业的首选。这类软件不仅可以在企业内部建立稳定、安全的沟通渠道,还能根据企业需求进行定制开发,满足各种复杂的业务需求。今天,就为大家推…

3. 欧拉积分

了解欧拉积分的定义和其他形式,掌握他们的性质,主要是伽马函数的递推公式,贝塔函数的对称性和递推公式,以及贝塔函数和伽马函数的关系。 难点:利用欧拉积分求定积分。 重点习题:习题1-3莱昂哈德欧拉(Leonhard Euler ,1707年4月15日~1783年9月18日),瑞士数学家,13岁…