2016-08-12 1 views
0

Ich versuche ein ziehbares div zu machen.Ziehen eines div via touch - sehr langsam

Javascript-Code Snippet:

document.getElementById('mySidenav').addEventListener('touchmove', 
    function(event) { 
     event.preventDefault(); 

     clickX = event.touches[event.touches[0].identifier].pageX; 

     if(navigationOpen){   
     //draggable.style.width = Math.floor(clickX) + 'px'; 
     document.getElementById('mySidenav').setAttribute("style","width:"+ clickX + "px"); 
    } 

}, false); 

Nun gibt es zwei Probleme:

1) Der Widerstand funktioniert nicht, bis ich (nicht unbedingt endende Berührung)

2 nicht mehr bewegen) Es gibt auch ein bisschen Verzögerung, wenn sich die <div> bewegt.

ich überprüfen, um die Bewegung von outputing meine clickX und es funktioniert gut unter 30fps

Bin ich etwas falsch zu machen, um zu sehen? Gibt es eine Möglichkeit, dies zu tun?

UPDATE: Ich bin mit diesem Programm in Cordova auf Android

+1

Gibt es einen Grund, warum Sie nicht jQuery verwenden? Oder speziell jQuery Mobile? – Dekel

+0

Ich lerne immer noch :) –

Antwort

1

Danke Jungs für die Hilfe. Aus irgendeinem Grund war die Lösung Code von CSS löschen

.sideNav { 
    ... 
    ... 

    transition: 0.5s; /* This */ 
} 

Aber jetzt gibt es keine fließend Animation, wenn die sideNav endet/Öffnung :(

1

Sie nicht Ihre HTML einfügen haben also hier ist nur ein kleines Beispiel eines ziehbar div, die auf Touch-Geräten funktioniert wirklich gut.

var nodeList = document.getElementsByClassName('dragme'); 
 

 
for (var i = 0; i < nodeList.length; i++) { 
 
    var obj = nodeList[i]; 
 
    obj.addEventListener('touchmove', function(event) { 
 
    var touch = event.targetTouches[0]; 
 
    event.target.style.left = touch.pageX + 'px'; 
 
    event.target.style.top = touch.pageY + 'px'; 
 
    event.preventDefault(); 
 
    }, false); 
 
}
.dragme { 
 
    width: 50px; 
 
    height: 50px; 
 
    position: absolute; 
 
    background-color: grey; 
 
    border: 2px solid black; 
 
}
<div class="dragme"></div>

Es gibt keine Mausereignisse hier so ist es nur auf Touch funktioniert, aber hoffentlich kann dieses Beispiel für Sie nützlich sein.

Fiddle zu spielen, um: https://jsfiddle.net/thepio/fjmn0pej/

+0

Vielen Dank für die detaillierte Hilfe, ich habe es geschafft, damit es funktioniert, vielleicht können Sie mit anderen Problemen helfen? :) –

+0

Sicher, frag weg! Ich werde deine andere Frage am Montag des letzten ansehen :) – thepio