2017-02-03 2 views
0

In Javascript Ich möchte, ohne Übergänge divs mit Rotationen positionieren eine Startposition für eine Animation (mit CSS-Übergang gemacht) zu erreichen. Nach dieser Anfangsposition möchte ich den Übergang aktivieren.Deaktivieren und Aktivieren CSS-Übergangsposition zu initialisieren

Ich habe einen Codepen dort: http://codepen.io/3MO/pen/ZLoKbv Es scheint, dass der Codepen nicht funktioniert, wird es auf meinem lokalen funktioniert, wird die window.onload nicht berücksichtigt.

Wie dem auch sei: - die divs haben noch keine Übergang attribues gesetzt. - Ich transformiere die divs, entsprechend der Zahl geklickt. - Danach möchte ich Übergänge starten, also füge ich eine Klasse zu den divs hinzu, die die Übergangseigenschaften definieren.

function onThumbnailClick(event) { 
    var index = parseInt(event.target.id.split('-')[1]); 

    //initialize the div position without transition : 
    initPortraitPanel(index); 
    //then I "activate" the transition : 
    $('.portraitDiv').addClass('active-transition'); 
    //After that I want to launch transitions... 
}  

.active-transition { 
     transition: 0.5s; 
} 

Das Problem ist, die anfängliche Positionierung der divs nimmt die Übergangseigenschaften, auch wenn sie nach festgelegt sind.

jeder kann eine richtige Art und Weise sagen Sie mir Übergang für eine erste Positionierung zu deaktivieren, aktivieren Sie dann den Übergang so dass diese anfängliche Positionierung nicht Übergang nicht verwendet?

Danke!

+0

Sie müssen schließen jQuery, damit das Codepen-Beispiel funktioniert. In Zukunft, wenn etwas nicht funktioniert, schauen Sie in der Browser-Konsole, bevor Sie etwas anderes tun;) – Archer

+0

Danke, ich habe es hinzugefügt, so jetzt funktioniert es. – Joel

+0

Es ist wirklich schwierig, Ihre Frage zu verstehen. Können Sie erklären, was das Problem ist? –

Antwort

1

ein Timeout zum addClass Hinzufügen:

function onThumbnailClick(event) { 
    var index = parseInt(event.target.id.split('-')[1]); 

    initPortraitPanel(index); 
    $('.portraitDiv').setTimeout(addClass('active-transition'), 50); 
} 

codepen

Es scheint, dass dies wurde bereits beantwortet, Downvoted und gelöscht ... Ich weiß nicht, warum

+0

@ Kevin Jimenez Es scheint, dass Sie bereits wussten, Die Antwort: Fehle ich etwas? – vals

+0

Hinzufügen eines Timeout scheint eine schmutzige Lösung, nicht wahr? Ich meine, wie stellen Sie die Dauer? Empirische Erfahrung? Aber so wird es auf die Browser abhängen ... Es wäre meine Ich habe versucht, ein Ereignis zu finden, das ausgelöst wird, wenn eine Position erreicht wird, ohne Übergang, aber es scheint, dass es nicht existiert – Joel

+0

Nein, es ist keine schmutzige Lösung, es ist die sauberere out ist nicht wichtig, und in den meisten Browsern kann 0 sein. Das Schlüsselproblem hier ist es, einen Browser Render zwischen den 2 Funktionen zu ermöglichen. (initPortraitPanel und Hinzufügen der Klasse) – vals

Verwandte Themen