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

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

时间:2024-06-06 17:22:19浏览次数:14  
标签:body isFull UI 全屏 组件 screenfull div 弹窗

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博客

标签:body,isFull,UI,全屏,组件,screenfull,div,弹窗
From: https://www.cnblogs.com/xinheng/p/18235649

相关文章

  • open-webui无法链接ollama 报错ERROR:apps.ollama.main:Connection error: Cannot con
    一个问题找了很久,网上没有现成的答案,我来写一个,方便再遇到的人一、问题1.ollama是使用官方curl-fsSLhttps://ollama.com/install.sh|sh 安装的2. open-webui是docker启动,docker正常启动,使用github推荐的#WebUI与ollama在同一台机器:sudodockerrun-d-p3000:8080......
  • PersistentStorage:持久化存储UI状态
    参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/arkts-persiststorage-0000001474017166-V2#section5462163812155从AppStorage中访问PersistentStorage初始化的属性1.初始化PersistentStorage:PersistentStorage.PersistProp('aProp',47);2.在AppStorage......
  • 探索Adobe XD:高效UI设计软件的中文入门教程
    在这个数字化世界里,创意设计不仅是为了吸引观众的注意,也是用户体验的核心部分。强大的设计工具可以帮助设计师创造出明亮的视觉效果,从而提高用户体验。一、AdobeXD是什么?AdobeXD是一家知名软件公司AdobeSystems用户体验和用户界面设计软件的制作和发布。软件可以帮助设......
  • LocalStorage页面级UI状态存储、将LocalStorage实例从UIAbility共享到一个或多个视图
    参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/arkts-localstorage-0000001524537149-V2#section13961833151713此处代码只精简了需要的importwindowfrom'@ohos.window';exportdefaultclassEntryAbilityextendsUIAbility{//共享LocalSto......
  • String、StringBuilder和StringBuffer是处理字符串的三个不同的类
    在Java中,String、StringBuilder和StringBuffer是处理字符串的三个不同的类,它们各自具有不同的特点和使用场景。下面将具体分析这三个类的异同点:不可变性与可变性String:String是一个不可变的字符串,这意味着一旦一个String对象被创建,其值就不能改变。这种设计提供了值的恒定性,使......
  • SwiftUI 热门开源库推荐第1期 - 凡人程序猿 - iOS开发
    大家好,周末给大家分享几个我在用已久的GitHub开源库,这些开源库使用简单,功能强大,使用好它们能够为我们节省大量的开发时间。话不多说,直接上库。1、PopupViewgithub项目地址:https://github.com/exyte/PopupView这个开源库在GitHub上有3.2K个赞。它是一款功能全面且好用......
  • 界面控件Telerik UI for WPF中文教程 - 用RadSvgImage升级应用程序UI
    TelerikUIforWPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。UIforWPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成VisualStudio工具箱中。TelerikUIforWPF中的RadSvgImage组件使......
  • 微软官方开源免费的Blazor UI组件库 - Fluent UI Blazor
    前言今天大姚给大家分享一个由微软官方开源(MITLicense)、免费的BlazorUI组件库:FluentUIBlazor。全面的ASP.NETCoreBlazor简介和快速入门FluentUIBlazor介绍FluentUIBlazor是一个基于Blazor的组件库,提供了一系列的UI组件以及FluentUI的设计系统。该库可以帮助开......
  • 基于CNN卷积神经网络的金融数据预测matlab仿真,带GUI界面,对比BP,RBF,LSTM
    1.程序功能描述基于CNN卷积神经网络的金融数据预测matlab仿真,带GUI界面,对比BP,RBF,LSTM. 2.测试软件版本以及运行结果展示MATLAB2022A版本运行   3.核心程序............................................................functioncnnnumgradcheck(net,x,y......
  • 【语音处理】声音信号频谱分析仪(时域分析 频域分析)【含GUI Matlab源码 4627期】
    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。......