場景一:我們將dialog寫成一個可復用的公共組件用於顯示不同內容(如表格操作中的修改或添加的彈窗),之后發現dialog的遮罩將彈出層(點擊修改或添加后理應由一個彈窗顯示出來)都蓋住了,而我想要的效果是遮罩只遮住舊的窗口,而當前窗口應該完全顯示;
(注:表格是使用easyui的panel和window來包裹的,dialog才是使用的element-ui中的組件)
百度了一圈最后的解決方案是在el-dialog上加入以下屬性:
:modal-append-to-body="false"
意為:遮罩層是否插入至 body 元素上,若為 false,則遮罩層會插入至 Dialog 的父元素上
場景二: 同一個 項目中,dialog用於密碼修改,且不引用上面的公共組件,直接使用<el-dialog></dialog>標簽包裹一個form表單。結果表現是這樣的:單獨點擊密碼修改打開彈框沒問題,但是若先打開一個table-window窗口后再點擊密碼修改按鈕打開彈框,會發現此時的彈框會直接被
table-window遮蓋,表面上看似層級不夠的原因造成的,但是看了css樣式並非如此,或者直接給dialog添加比bable高的層級,一樣無濟於事。
解決辦法如下:在el-dialog上加入以下屬性
:append-to-body="true"
意為:Dialog 自身是否插入至 body 元素上。嵌套的 Dialog 必須指定該屬性並賦值為 true。(官方的解釋:到現在我也沒整明白這句話的意思!)
博客上看到意為博友的解釋是這樣的:因為有時候會存在頁面某些元素沒有被 modal 蓋上的情況,其實這種情況出現的原因就是你的dialog 是放在當前組件中的,如果放body 下則不會有這些情況!雖然也是似懂非懂,但是起碼問題解決了,這就夠了。