jQuery Loading Animation (Drupal + Non-Drupal)
Das Projekt jQuery Loading Animation ist als "Nebeneffekt" einer unserer Softwareentwicklungen, gemeinsam mit Thomas Frobieter entstanden.
Benutzer werden schnell ungeduldig, wenn eine Seite mal etwas länger lädt und Ladeanimationen tragen dazu bei, diese Wartezeit psychologisch zu verkürzen.
Ich habe einige Zeit nach einer Standard-Lösung gesucht, komischerweise aber, obwohl ich dies für ein typisches Problem halte, keine wirklich gute Lösung gefunden.
Kurzum habe ich das beigefügte jQuery-Snippet entwickelt. Dies ist sowohl für Drupal als auch für jede andere Website (Hinweis beachten!) innerhalb weniger Minuten nutzbar.
Installationshinweise:
- Snippet & CSS in die Website einbinden (jQuery benötigt!)
- Grafikpfad und gegebenenfalls Design anpassen
- Es empfiehlt sich, die verwendete Grafik auch im Footer der Seite versteckt ("style="display:none;") abzulegen, damit sie entsprechend vorgeladen wird.
- Nutzen!
Übrigens freue ich mich auch über Hinweise zu alternativen Lösungen oder weitere Verbesserungsvorschläge.
Hinweis für den Drupal-Einsatz:
- Das Snippet beachtet bereits Übersetzungen ("Loading")
- Ihr könnt die JS-Datei über die .info-Datei eures Themes einbinden: Zeile: "scripts[] = js/loading.js" hinzufügen und Datei entsprechend im Theme-Verzeichnis (Ordner "js") ablegen
- Vergesst nicht, auch JQuery (beispielsweise über ein Modul) einzubinden!
UPDATE:
Ich habe diese Funktionalität nun in einem Drupal 6 und einem Drupal 7 Modul umgesetzt, das ihr hier herunterladen könnt (aktuell leider noch Sandbox!). Sollte aber voll einsatzfähig und stabil sein.
http://drupal.org/sandbox/Anybody/1373998
Hinweis für den Nicht-Drupal-Einsatz:
- Bitte entfernt die "Drupal.t('loading')"-Methoden!! Hier geht es nur um Übersetzungen. Einfach durch euer Übersetzungssystem oder einfachen Text ersetzen!
Script-Code:
- $("document").ready(function(){
- //Initialisieren
- Loadinganimation.init();
- });
- var Loadinganimation = {
- imgSrc: '/path/to/ajax_load_big.gif',
- init: function(){
- //Anwenden auf alle Links außer JS-Links, interne Links und solche mit der Klasse ".noLoadingAnimation"
- $("a[href]").not("a[href=javascript:;]").not("a[href=#]").not(".noLoadingAnimation").each(function(i, element){
- //Nur Elemente, die keine JS-Events haben (TODO: Nur click-events beachten)
- if(typeof $(element).data("events") == 'undefined' || $(element).data("events").length==0){
- $(element).click(function(eventObject){
- //Nicht bei Öffnen in neuem Tab (Strg+Klick)
- if (!eventObject.ctrlKey) {
- Loadinganimation.show();
- }
- });
- }
- });
- //Bei Formularversand auch ausfuehren, wenn keine anderen Events registriert sind.
- $("form").submit(function(){
- console.log($(this).data("events"));
- if(typeof $(this).data("events") == 'undefined' || $(this).data("events").length==0){
- Loadinganimation.show();
- }
- });
- //Bei Klick auf die Animation ausblenden
- $("div#loadinganimation").click(function(){
- Loadinganimation.hide();
- });
- //Bei ESC wieder ausblenden
- document.onkeydown = function(e){
- if (e == null) { // ie
- keycode = event.keyCode;
- } else { // mozilla
- keycode = e.which;
- }
- if(keycode == 27){ // escape, close box
- Loadinganimation.hide();
- }
- };
- },
- /**
- * Zeigt die Ladegrafik als Layer über der Seite.
- */
- show: function(){
- //Nur einblenden, wenn nicht bereits eingeblendet!
- if($("div#loadinganimation").length==0){
- $("body").append(
- '<div id="loadinganimation"><div class="border"></div><div class="inner"><img class="first" src="'+Loadinganimation.imgSrc+'" alt="'+Drupal.t('Loading')+'..." /><img class="second" src="'+Loadinganimation.imgSrc+'" alt="'+Drupal.t('Loading')+'..." /><img class="third" src="'+Loadinganimation.imgSrc+'" alt="'+Drupal.t('Loading')+'..." /><br />'+Drupal.t('Loading')+'...</div><div class="border"></div></div>'
- );
- }
- },
- /**
- * Versteckt die Ladegrafik über der Seite.
- */
- hide: function(){
- $("div#loadinganimation").remove();
- }
- }
CSS-Code (Achtung, CSS 3 - könnt ihr gerne anpassen!):
- /* Page Ladebalken */
- #loadinganimation{
- box-shadow:18px -10px 20px rgba(0, 0, 0, 0.2), 18px 10px 20px rgba(0, 0, 0, 0.2);
- position:fixed;
- width:100%;
- z-index:999;
- top:25%;
- left:0;
- text-align:center;
- color:#000;
- font-weight:bold;
- font-size:0.8em;
- cursor:wait;
- }
- #loadinganimation .inner{
- background: -moz-linear-gradient(left center, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 1.0), rgba(255, 255, 255, 0.4));
- border-color:#c6c6c6;
- border-width:1px 0;
- border-style:solid;
- padding:10px 0;
- }
- #loadinganimation .border{
- background: -moz-linear-gradient(left center, rgba(255, 255, 255, 1.0), rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 1.0));
- height:10px;
- }
- #loadinganimation .first,
- #loadinganimation .third{
- opacity:0.15;
- height:80px;
- margin-bottom:10px;
- -moz-transform: skew(-25deg);
- }
- #loadinganimation .first{
- -moz-transform: skew(25deg);
- }
Nutzungshinweis / Lizenz:

jQuery Loading Animation Snippet von Julian Pustkuchen steht unter einer Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.
p. S.: Eigene Ladegrafiken erhaltet ihr hier: http://www.ajaxload.info/
| Attachment | Size |
|---|---|
| loading.css | 950 bytes |
| loading.js | 2.23 KB |
| Example Screenshot | 77.72 KB |
Julian Pustkuchen ist passionierter Software- & Webentwickler mit den Schwerpunkten Softwaredesign, Objektorientierung, Ablaufoptimierung und Usability bei webks. Ein weiterer Schwerpunkt ist die Entwicklung im CMS Drupal.
Er besitzt einen Abschluss als B.Sc. Wirtschaftsinformatik (dual) und studiert derzeit für seinen Abschluss als Master of Science Wirtschaftsinformatik.
Entwickelt Julian gerade keine Software, fährt er Ski, Mountainbike, spielt Badminton, segelt oder verbringt Zeit mit Freunden.
Dieser Blog dient als sein "öffentlicher Notizblo(ck/g)".
Neueste Blogeinträge
-
08.05.2012 - 17:41
-
03.05.2012 - 18:53
-
28.03.2012 - 10:28
Tags in Blogeintrag - Kategorie
Webbasierte Lösungen? Machen wir!
webks: websolutions kept simple
http://www.webks.de






Comments
Funktioniert gut, vielen Dank
Funktioniert gut, vielen Dank fürs Veröffentlichen!
Grüße aus Koblenz
Post new comment