——————————————20180410补充———————————————————————————————

今天发现,原来不需要调整的layer弹窗也无法弹出了,

对比了代码版本,发现是因为今天调试代码的时候用了dump打印数据

紧接着我又试了下  echo ,print_r ,var_dump等输出打印形式

发现,TP的dump方法直接会导致弹窗不可见

而PHP原生的echo,print_r,var_dump,会导致弹窗位置不为屏幕中央

删掉输出函数之后,果然弹窗又正常了。

———————————————————————————————————————————————————–

 

 

 

最近和前端进行交互的时候,出现了两次如题所述的问题

第一次出现时百思不得解,暂时就先放下了

第二次又出现这个问题的时候,那真是百爪挠心了!

幸而灵机一动,使用f12查看页面元素的变化,结果成功找到了原因

 

如图所示,我们看到layer的弹窗确实是已经触发了,元素也已经追加到了网页中,但是却看不出来变化!

不急,选中这段代码,我们来看看它的样式

这样,我们又发现了问题,z-index设置的很大,肯定是想让弹窗始终保持在顶层的,

但是这个top的值又未免太大了吧?!

于是我尝试将其调整小一点

 

 如上图所示,top改为100px之后,页面中已经可以捕捉到弹出层的元素位置了,但是貌似z-index还小?但是默认的z-index已经很大很大了呀

于是我又查看了自己的遮罩层的z-index

显然不应该因为这个导致layer弹窗被覆盖啊。

没办法走一步算一步,我就尝试使用js更改这个弹窗元素按照自己调试的结果进行更改

重点来了,layer的样式是行内的,我们也就只能使用行内的样式才能覆盖系统默认的样式了

所以:

 

 结果来了!

 

总结:出现layer的问题,一般都是自己的弹出层和layer弹出层出现了冲突。

     所以最好的解决方案,当然是从源头上,自己的弹窗也使用layer.open来构建,这样就不会有冲突了

          当然,既然问题已经出现了,那就试试上述方法来调整样式吧!

 

版权声明:本文为sicada原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/sicada/p/8708812.html