您的位置:首页 > 健康 > 养生 > 自定义的全局弹窗组件,会被其他第三方组件库的弹窗覆盖

自定义的全局弹窗组件,会被其他第三方组件库的弹窗覆盖

2025/4/18 23:20:51 来源:https://blog.csdn.net/qq_36579455/article/details/142216856  浏览:    关键词:自定义的全局弹窗组件,会被其他第三方组件库的弹窗覆盖

写在前面

前几天出了一篇文章《记一次高版本view-design的组件迁移到自身项目的低版本》,在深度使用之后,发现该组件内部的z-index值会比其他第三方库的弹窗组件的z-index小,导致被遮挡。

解决方案

这里给大家介绍两种解决方案

  1. 方案一:全部使用一方组件库的弹窗类型组件(modal, message, preview等),因为市面上目前针对这类型组件库中的组件都会采用同一个队列来维护,所以不会出现后出现的组件比先出现的组件的层级z-index高,来这里的估计是这种方法行不太通了的

  2. 方案二:改变你当前组件的层级
    思路:找到当前页面上最高层级的元素,然后拿到它的z-index 属性值,然后就是把你想要层级最高的组件的z-index 设置的刚好超过最高层级的属性值就可以了。

代码如下:(可以回到我之前的那边博客看看,下面的代码是其中的一个方法)

getMaskIndex() {/** 获取当前最大的层级 */const element = document.elementFromPoint(10, 10);const zIndex = parseInt(element.style.getPropertyValue('z-index') || 0);transferIncrease();const currentIndex = this.maskIndex + transferIndex;/** 仅当页面存在大于当前组件的z-index才执行 */if (zIndex > currentIndex) {// 执行increase函数到刚好超过最大页面的层级for (let i = 0; i < zIndex - currentIndex; i++) {transferIncrease();}}return transferIndex;},

核心代码,document.elementFromPoint(10, 10), 找到最高层级的元素, 想要了解更多相关信息,可以去mdn文档查看

写在最后

如果博主帮到你们了,就给他点个赞吧,能帮助同行是我最开心的事情!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com