当开始使用 HTML5 可拖动属性拖动元素时,原始元素仍然可见,所以我最终有两个元素可见而不是一个。
我该怎么做才能只显示被拖动的元素(原始元素应该暂时隐藏)。
<script>
function startDrag() {
// hide initial element
}
function endDrag() {
// reset initial element
}
</script>
<div class="draggable" draggable="true"
ondragstart="startDrag(event)"
ondragend="endDrag(event)"
></div>
这是一个 jsfiddle 来显示问题 https://jsfiddle.net/gjc5p4qp/
原文由 julesbou 发布,翻译遵循 CC BY-SA 4.0 许可协议
你可以通过一个 hacky 解决方案来成功。本机可拖动性不允许 CSS 样式,例如:
opacity:0;
、visibility:hidden
或display:none
。但您可以使用:
transform:translateX(-9999px)
。我已经用解决方案更新了你的 JSFiddle 。
[编辑]:
通过使用
requestAnimationFrame
而不是setTimeout
更新了 JSFiddle 示例,其中包含 Andrew Hedges 的 建议。[编辑 2]:
Jason Yin 更新了一个更好的解决方案,添加了
transition
CSS 属性,而不是使用requestAnimationFrame
,它将处理从脚本编写转移到渲染。