html - 如何接受 div 的 D&D,但传播点击?
问题描述
我有一个全尺寸的 Windowsdiv
容器,它对传入的文件拖放事件作出反应。
<div id="drag-overlay">
<div id="drag-overlay-text">This is shown while drag is active...</div>
</div>
不幸的是,容器不再将点击传播到按钮等底层对象。是否有一个简单的CSS修复,或者我需要在 div 容器上注册一个点击处理程序并手动传播点击/拖动?后者真的不是一个好的解决方案
#drag-overlay {
position: absolute;
top: 0;
z-index: 1;
bottom: 0;
left: 0;
right: 0;
height: 100%;
width: 100%;
opacity: 0;
}
拖放处理程序的注册:
var holder = document.getElementById('drag-overlay');
holder.ondragover = () => { ...
holder.ondragleave = () => { ...
holder.ondragend = () => { ...
holder.ondrop = (e: DragEvent) => { ...
...
解决方案
我猜问题是按钮在技术上“在”下方,drag-overlay
因为它是绝对定位的,所以不能对它们采取任何行动seen
。
由于您没有发布大量代码,因此我将这个工作示例放在一起,该示例显示将按钮放在外部#drag-overlay
并绝对定位它的 z-index 高于#drag-overlay
.
var btn = document.querySelector("button");
btn.addEventListener("click", function(e) {
e.preventDefault();
console.log("click");
});
#drag-overlay {
position: absolute;
top: 0;
z-index: 1;
bottom: 0;
left: 0;
right: 0;
height: 100%;
width: 100%;
opacity: 0;
}
button {
position: absolute;
top: 0;
z-index: 2;
left: 0;
right: 0;
}
<button>TEST</button>
<div id="drag-overlay">
<div id="drag-overlay-text">This is shown while drag is active...</div>
</div>
推荐阅读
- python - 没有名为“darkflow.cython_utils.cy_yolo_findboxes”的模块
- android - 从 Android 共享意图下载文件
- fonts - 用于嵌入式系统的 CJK 字体
- java - 使用 JsonObjectRequest 和 GET 请求发送 JSON 正文
- android - 使用 executor 在 android 中运行下载管理器任务
- python - 如何修改视图以仅向一个分配的用户显示数据?
- java - java.sql.SQLException:字段 'useremail' 没有默认值
- python - 当使用 tkinter 中的复选框使用 for 循环放置在他的窗口中时,有没有办法让它们引用不同的变量?
- javascript - 将图标放在带有文本溢出省略号的两行行之后,而不会中断第 3 行
- django - VSCode Django 虚拟环境包装器