2017-03-14 2 views
2

Ich möchte ein Element durch Drücken der Leertaste, wie ein Tetris-Effekt zu drehen. Aber bis jetzt kann ich es nur einmal drehen, und die Methode position() scheint nicht so zu funktionieren, wie wenn man Tasten verwendet, um sich seitwärts zu bewegen. Jede Hilfe oder ein Hinweis wäre willkommen. Hier ist, was ich habe:JavaScript/jQuery: rotieren Element beim Drücken der Taste (Tetris-Effekt)

$(document).ready(function() { 
    $(document).on('keydown', function(e) { 
    var keyCode = e.keyCode; 
    var div = $("#div"); 
    e.preventDefault(); 

    if (keyCode === 37) div.css("left", (div.position().left - 1) + "px"); 
    if (keyCode === 39) div.css("left", (div.position().left + 1) + "px"); 
    if (keyCode === 32) div.css('transform','rotate(-90deg)'); 

}); 
+0

Willkommen bei SO. Wenn eine Antwort dein Problem gelöst hat, markiere es als akzeptiert http://i.stack.imgur.com/QpogP.png, damit der Rest der Community davon profitieren kann, Prost! ;) – JorgeObregon

Antwort

3

Ihre Eigenschaft drehen ist immer -90px. Ich würde eine Variable haben, die die 'Rotation' verfolgt, die bei 0 beginnt. Dann subtrahiere ich -90 bei jedem Leerzeichen. Denken Sie daran, gehen nicht über 360, sondern zurückgesetzt auf 0.

$(document).ready(function() { 
 
    var rotation = 0; 
 
    $(document).on('keydown', function(e) { 
 
    var keyCode = e.keyCode; 
 
    var div = $("#div"); 
 
    e.preventDefault(); 
 

 
    if (keyCode === 37) div.css("left", (div.position().left - 1) + "px"); 
 
    if (keyCode === 39) div.css("left", (div.position().left + 1) + "px"); 
 
    if (keyCode === 32) { 
 
     rotation -= 90; 
 
     if (rotation < -360) 
 
     rotation = 0; 
 
     
 
     div.css('transform','rotate('+rotation+'deg)'); 
 
    } 
 
    }); 
 
});
#div { 
 
    border: 1px solid #CCC; 
 
    width: 100px; 
 
    height: 50px; 
 
    text-align: center; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="div">test</div>

+0

Ok, danke für den Hinweis, ich werde es versuchen – glassraven

+0

toll! Danke für die tolle, einfache Lösung; – glassraven

+0

Ich warte nur ... – glassraven

Verwandte Themen