------------------------------------------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來構建,這樣就不會有沖突了
當然,既然問題已經出現了,那就試試上述方法來調整樣式吧!