2016-04-02 15 views
7

एचटीएमएल 5 ड्रैगगेबल विशेषता का उपयोग करके तत्व खींचने के लिए, मूल तत्व अभी भी दिखाई दे रहा है, इसलिए मैं एक के बजाय दो तत्व दिखाई देता हूं।html5 draggable मूल तत्व को छिपाएं

मैं केवल तत्व को खींचने के लिए कैसे कर सकता हूं (मूल को क्षणिक रूप से छुपाया जाना चाहिए)।

<script> 
    function startDrag() { 
    // hide initial element 
    } 

    function endDrag() { 
    // reset initial element 
    } 
</script> 

<div class="draggable" draggable="true" 
    ondragstart="startDrag(event)" 
    ondragend="endDrag(event)" 
></div> 

यहाँ समस्या https://jsfiddle.net/gjc5p4qp/

उत्तर

9

आप इस एक hacky समाधान सफल हो सकते दिखाने के लिए एक jsfiddle है। देशी ड्रैगगेबिलिटी सीएसएस शैलियों की अनुमति नहीं देती है जैसे: opacity:0;, visibility:hidden या display:none

लेकिन आप इसे उपयोग कर सकते हैं: transform:translateX(-9999px)

मैंने समाधान के साथ अपने JSFiddle को अद्यतन किया है।

+0

वाह कि वास्तव में अच्छा है, तुम्हें पता है 1 घसीटा तत्व की पारदर्शिता सेट करने के लिए कैसे करते हैं? – julesbou

+0

हाहा, धन्यवाद। मुझे ऐसा करने का कोई तरीका नहीं मिला, ऐसा लगता है कि ड्रम किया गया "भूत तत्व" डोम पर उपलब्ध नहीं है, इसलिए हमें कुछ सीमाएं मिलती हैं। यह [उत्तर] देखें (http://stackoverflow.com/a/10904112/3938676) – Filipe

+0

@ जुल्सबौ फिलिप अभी भी इसका कोई उचित समाधान नहीं है? – Anthony

2

बस visibility: hidden सेट करने के बाद से काम नहीं करता है, मुझे कुछ और हैकी समाधान मिला: ड्रैग इवेंट शुरू होने के बाद visibility: hidden एक मिलीसेकंड सेट करें।

function startDrag(e) { 
 
    setTimeout(function() { 
 
    e.target.style.visibility = "hidden"; 
 
    }, 1); 
 
} 
 

 
function endDrag(e) { 
 
    setTimeout(function() { 
 
    e.target.style.visibility = ""; 
 
    }, 1); 
 
}
body { 
 
    display: inline-block; 
 
    outline: 1px solid black; 
 
} 
 
.draggable { 
 
    border-radius: 4px; 
 
    background: #CC0000; 
 
    width: 40px; 
 
    height: 40px; 
 
}
<div class="draggable" draggable="true" ondragstart="startDrag(event)" ondragend="endDrag(event)"> 
 

 
</div>

+2

एक 'setTimeout' का उपयोग करने के बजाय, आप' window.requestAnimationFrame' इस के लिए उपयोग कर सकते हैं: 'समारोह startDrag (ई) { window.requestAnimationFrame (function() { e.target.style.visibility =" छिपा " ; }); } ' –

+0

@AndrewHedges किसी भी विचार को अस्पष्टता को कम करने से कैसे रोकें ?! – Anthony

संबंधित मुद्दे