如何隐藏你的元素
如果要隐藏元素,可以使用 CSS 属性visibility:hidden
或display:none
.
我推荐使用该visibility
属性,因为它隐藏了一个元素而不改变文档的布局。但是,如果你的元素有子元素并且你想隐藏它们,你需要visibility:inherit
在每个子元素上进行设置。
什么时候隐藏
你使用这个dragstart
事件是对的。但是由可拖动属性创建的元素的克隆出现在dragstart
事件的末尾。
因为 JavaScript 引擎是一个单线程解释器,如果你选择在这里隐藏它,你的元素将被屏蔽为它的克隆,它将复制属性visibility:hidden
。事实上,为避免这种情况,您需要在Javascript 调用堆栈中创建克隆后将其隐藏。
为此,请使用该setTimout()
功能并将其设置为 0 ms。这样,在创建他的克隆之后,原始元素的掩码被放在堆栈的末尾。
在拖动结束时,要使其重新出现,您只需通过调用事件visibility:visible
将元素设置为可见。dragend
代码示例
例如,代码如下所示:
<div
class="draggable"
draggable="true"
ondragstart="startDrag(event)"
ondragend="endDrag(event)"
style="background: #e66465; color:white; width:80px; height:20px; text-align:center;">
Drag me
</div>
<script>
function startDrag(e) {
setTimeout(function(){
e.target.style.visibility = "hidden";
}, 0);
}
function endDrag(e){
e.target.style.visibility = "visible";
}
</script>