为所有弹窗增加全屏切换功能
创始人
2024-03-24 17:32:37
0
1、现状

在开发两个管理系统,现在的页面20+,其中包含不少的弹窗。在项目开发过程中没人提过弹窗要全屏的事情,且在数据量较大的位置已经增加了可全屏的入口。但老板两次说为什么不给所有的弹窗增加全屏的功能,从中感觉到了侮辱,做页面也有些年头,但从没见过有网站所有窗口支持全屏功能的。

2、思考
  • 这个需求是不是合理?

​ 个人认为有20%合理性,这主要是因为在做需求时习惯性忘记要加全屏功能。
​ 80%不合理,因为至少80%的页面没有全屏的必要性,确认弹窗难道也有全屏的必要?

  • 这个需求要不要做?

    这是个伪命题,老板说要还能不做?虽然也不是一定要做。

    其次,这是从技术角度还有些意思的探索。

    所以在没有答应的情况下准备做一些技术实践。

  • 要怎么做?

    a、不可能为每个弹窗单独增加全屏功能

    b、侵入性应该尽量少

    c、接受少量场景缺陷(80%不会触发)

3、实现

使用的是antd + vue3,思路是一样的,其他场景改改可用。

antd中有实现弹窗全屏的实现,我们要做的就是如何简单的实现同一界面多窗口控制。

全屏实现原理:

  • 全屏时通过wrap-class-name设置class
  • 通过class实现全屏
4、干货
  • 全屏事件监听
const isFullScreen = ref(false)
// 将多个控制弹窗显示的变量加入监听
watch([blockChainVisible, ()=>userUploadConfig.visible, ()=>modalConfig.visible, kvEditModel, tagEditModel], () => {// 设置 1s 延时,避免弹窗还未显示便执行setTimeout(() => {const html = document.getElementsByClassName('ant-modal-header') || []const len = html.lengthif (len > 0) {for(let i=0; i < len; i++) {// 清理元素已存在监听,并重新增加监听  html[i].removeEventListener('dblclick', () => {})html[i].addEventListener("dblclick", () => {isFullScreen.value = !isFullScreen.value});}}},1000)})
  • 为弹窗增加class绑定

    :wrapClassName="isFullScreen ? 'full-modal':''"
    
  • 设置样式

    .full-modal {.ant-modal {width: 100%;top: 0;padding-bottom: 0;margin: 0;}.ant-modal-content {display: flex;flex-direction: column;height: calc(100vh);width: calc(100vw);}.ant-modal-body {flex: 1;}
    }
    

    因为很多页面都需要这段样式,所以将这段样式写在app.vue

如此,在弹窗显示时,双击标题区可以实现全屏与非全屏切换。

5、待优化项
  • 为弹窗增加显示的切换入口(双击入口不易发现)
  • 配置更加简化

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...