![](/img/trans.png)
[英]pointer-events: all not enabling element clickability after former pointer-events: none
[英]How to remove pointer-events from all children of the element with a dragover event?
我創建了一個全球性dragover
事件偵聽器,以便當一些它拖過的頁面將顯示在頁面上的dragover區並隱藏它,當你將光標移動到頁面:
document.addEventListener('dragover', event => {
event.preventDefault()
this.dragOverArea = true
// ...
})
document.addEventListener('dragleave', event => {
event.preventDefault()
this.dragOverArea = false
// ...
})
JSfiddle: http : //jsfiddle.net/ct3haqf0
嘗試將任何文件拖動到頁面上的元素上(從左上方開始),您將看到dragover
事件切換為dragleave
快速拖動,使拖放區域在元素中拖動時顯示/消失。
在我的項目中,它會產生明顯的滯后。 問題是, dragover
事件與元素的所有子元素發生沖突(並因此激活dragleave
),因此當您在充滿元素的頁面上拖動內容時,它會不斷顯示/隱藏放置區域
我發現您應該設置以下內容: pointer-events: none
使用dragover
偵聽器設置元素的所有子元素,因此我必須將此規則設置為body * { }
那么,如何在addEventListener('dragover')
內部帶有JS的body
所有子級上設置此規則?
我終於弄明白了。
我正在使用Vue.js,因此dragging
和showDropZone
只是data()
變量。
HTML
<div
v-show="showDropZone === true"
id="drop-zone"
class="drop-zone"
>
Drop zone text
</div>
JS
// In the component with the drop zone div:
document.getElementById('drop-zone').addEventListener('drop', event => {
event.preventDefault()
this.showDropZone = false
var files = event.dataTransfer.files
})
// In the entry component:
window.addEventListener('dragenter', event => {
this.dragging++;
this.showDropZone = true
event.stopPropagation();
event.preventDefault();
});
window.addEventListener('dragover', event => {
this.showDropZone = true
event.stopPropagation();
event.preventDefault();
});
window.addEventListener('dragleave', event => {
this.dragging--;
if (this.dragging === 0) {
this.showDropZone = false
}
event.stopPropagation();
event.preventDefault();
});
將類添加到主體(可以使用CSS設置樣式)怎么樣?
添加類:
function addClassToBody( newClass )
{
document.body.className += " "+newClass+" ";
}
function removeClassFromBody( oldClass )
{
document.body.className = document.body.className.replace(" "+oldClass+" "," ");
}
CSS:
body.drag * {
pointer-events: none !important;
}
我在jsfiddle中對其進行了測試: http : //jsfiddle.net/timlg07/4fdj0hvc/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.