dojo und Notes: Artikel 5 - dojo.fx - Animation

von Bernd Hort,
assono GmbH, Standort Hamburg,

In dem letzten Artikel dieser Serie habe ich dojo.query() vorgestellt. In diesem Artikel werden wir dojo.query() ebenfalls einsetzen. Dieses Mal im Kombination mit dem dojo.fx-Package, welches Funktionalitäten zur Aninmation innerhalb von Webseiten zur Verfügung stellt. Gerade in dynamischen Webanwendungen, in denen Elemente nachgeladen oder einblendet werden können, helfen Animationen dem Anwender die Veränderung besser wahrzunehmen. Statt also ein neues Element einfach nur sichtbar zu machen, wird das Element sanft eingeblendet. Diese Bewegung ist für den Anwender besser nachzuvollziehen, als wenn aus dem Nichts plötzlich ein Element vorhanden ist, welches vorher nicht dar war.

In unserer Beispielanwendung werden wir zunächst erst einmal etwas verschwinden lassen und zwar die Sessionbeschreibungen. Das passiert in Vorbereitung auf den nachfolgenden Artikel, in dem wir dann zeigen werden, wie die Sessionbeschreibungen auf Knopfdruck sichtbar werden. Schauen wir uns den benötigten Code einmal an:
//Loads fx (animation) package
dojo.require("dojo.fx");

dojo.addOnLoad(function(){        
 // every odd div in the page with the class "session" assigned
 dojo.query(".session:nth-child(odd)").addClass("oddSession");
 // wipeOut all descriptions
 var descriptionsList = dojo.query(".sessionDescription");
 descriptionsList.forEach(function(currentNode, index, array){
   dojo.fx.wipeOut({node:currentNode}).play();
       });
});
Wie eingangs erwähnt benötigen wir dazu das dojo.fx-Package. Mit dem Befehl dojo.require("dojo.fx") wird das Package nachgeladen. Dabei werden Abhängigkeiten automatisch ermittelt und sofern notwendig weitere Packages ebenfalls nachgeladen. An dieser Stelle eine kleine Anmerkung zum Nachladen von Packages. Obwohl es eine gute Idee ist, nur die Teile von dojo zu laden, die auch wirklich benötigt werden, hat dieser Ansatz auch einen Nachteil. Es werden einen Menge kleiner Dateien geladen. Aus Performancesicht wäre es allerdings besser, nur eine Datei zu laden. Tim Tripcony hat dazu einen Blog-Eintrag geschrieben "I still have one concern about Dojo". Das Problem wurde von den dojo Entwicklern auch erkannt. Das dojo Build System erzeugt aus einer Konfigurationsdatei heraus eine individuell Version von dojo in einer Datei, die nur die wirklich notwendigen Elemente enthält. Wenn Performance also ein Thema ist, wäre dieses ein Ansatz.

Wie gehabt verwenden wir die dojo.addOnLoad-Funktion, um Code nach dem Laden der Webseite auszuführen. Zunächst benötigen wir alle Sessionbeschreibungen. var descriptionsList = dojo.query(".sessionDescription");Mittels dojo.query(".sessionDescription") werden alle DOM-Knoten, die diese CSS-Klasse verwenden, in eine dojo.NodeList geschrieben und der Variablen descriptionsList zugewiesen.

Das dojo.NodeList-Objekt hat eine Methode forEach, die als Parameter eine Funktion erwartet, die dann auf jedes Element in der Liste angewendet wird.descriptionsList.forEach(function(currentNode, index, array){
 dojo.fx.wipeOut({node:currentNode}).play();
});Mit dojo.fx.wipeOut wird ein neues Animationsobjekt vom Typ "WipeOut" erstellt. "WipeOut" bezeichnet das langsame Zusammenschieben bis zum völligen Verschwinden des Elementes. Der Konstruktor erwartet ein Konfigurationsobjekt mit den Details für die Animation. Dieses Objekt wird mit {node:currentNode} direkt erzeugt. Wobei "node" der Eigenschaftsname und currentNode der aktuelle DOM-Knoten aus der forEach-Funktion ist. In diesem Fall handelt es sich um die einfachste Form eines Konfigurationsobjektes. Man kann unter anderem auch die Dauer der Animation oder auch die Beschleunigungsfunktion bestimmen. Die Methode play() führt die Animation direkt aus.

Das Ergebnis kann hier angeschaut werden. Es sei noch einmal daran erinnert, dass die Beispieldatenbank heruntergeladen werden kann. Für jeden einzelnen Schritt, den ich hier vorstelle, gibt es eine eigene Maske und zugehörige JavaScript Bibliothek. Für diesen Artikel ist es die Maske "webSpeedAgendaing-Step 3|SpeedAgendaing-3" und "SpeedAgendaing-Step3.js".
zip.gif
dojo-Sample.zip
(433 KB)
Im nächsten Artikel wird unsere Beispielanwendung so erweitert, dass die Sessionbeschreibung jeweils beim Klick auf den Titel sichtbar gemacht werden.

Fachbeitrag IBM Domino JavaScript Entwicklung

Sie haben Fragen zu diesem Artikel? Kontaktieren Sie uns gerne: blog@assono.de

Sie wollen eine individuelle Lösung? Kontaktieren Sie uns

Weitere interessante Artikel

Sie haben Fragen? Wir sind für Sie da.

Wenn Sie mehr über unsere Angebote erfahren möchten, können Sie uns jederzeit kontaktieren. Sie können uns auf verschiedene Weisen für eine unverbindliche Erstberatung erreichen:

assono GmbH

Standort Kiel (Zentrale)
assono GmbH
Lise-Meitner-Straße 1–7
24223 Schwentinental

Standort Hamburg
assono GmbH
Bornkampsweg 58
22761 Hamburg

Telefonnummern:
Zentrale: +49 4307 900 407
Techn. Hotline: +49 4307 900 403
Vertrieb: +49 4307 900 402

E-Mail-Adressen:
kontakt@assono.de
bewerbung@assono.de