解决element ui的z-index问题

有兴趣可关注公众号 毛毛虫的小小蜡笔,不定时更新前端等文章信息。

问题

测试发现一个偶现的bug,第一次打开调度配置的页面,点击具体时间是能选择时间的,但关闭后打开其他配置页面,再回来打开调度配置的页面,发现点击具体时间没反应。

如下截图所示:
解决element ui的z-index问题_第1张图片

分析

一开始以为是调度配置页面组件的状态问题。
因为具体时间是用了第三方组件,页面组件是通过v-show方式来显示隐藏的。所以再次打开后,可能没把状态处理好。

但验证的过程中,突然想到一个问题:第三方组件应该不会有这么低级的bug,还是先看看它的时间选择div节点在不在。

结果,具体时间虽然点击没反应,但时间选择的div节点还是在的,只是页面上看不到而已!

原来是el-drawer的层级太高,把时间选择div节点覆盖了!

但为啥第一次打开调度配置页面就没问题,后面就被覆盖了呢?

原来是element ui的el-drawer,没打开一次,z-index都会+1。。。

第一次打开,如下截图所示:
解决element ui的z-index问题_第2张图片
解决element ui的z-index问题_第3张图片

第二次打开,如下截图所示:
解决element ui的z-index问题_第4张图片

第三次打开,如下截图所示:
解决element ui的z-index问题_第5张图片

解决

目前解决方式就是加个important,覆盖element ui的z-index。

.mx-datepicker-popup {
  z-index: 2999 !important;
}

另外,el-dialog弹窗和其他浮窗貌似也有该问题。

疑问

为啥element ui的z-index会自增呢?

看了下源码,没具体说明什么原因。
如下截图所示:
解决element ui的z-index问题_第6张图片

解决element ui的z-index问题_第7张图片

解决element ui的z-index问题_第8张图片

然后到github上看了下,发现一开始就这样设计的。
如下截图所示:
解决element ui的z-index问题_第9张图片

最后

  • 有兴趣可关注公众号 毛毛虫的小小蜡笔,不定时更新前端等文章信息。
  • 文章有疑问和问题,请留言。
  • 如果觉得文章还可以,请点赞或收藏,谢谢。

你可能感兴趣的:(element-ui)