Im nachstehenden Beispiel werden Bilder ineinander eingefadet. Ist das Ende der Bilder erreicht, wird beim Ersten erneut begonnen.
Es reicht, ein Objekt zu initialieren und dabei die gültige ID eines existierenden Elements, das die Bilder enthalten soll, zu übergeben. Weiterhin wird dem Objekt ein Array mit Bildquellen bereitgestellt.
Das Initialisieren erfolgt, indem die gewünschten Optionen in Form eines Objekts übergeben werden (siehe Quellcode). Im Einzelnen stehen folgende Optionen zur Verfügung:
(optional, default: 120)
(optional, default: 120)
(optional, default: 2000)
(optional, default: 10)
(optional, default: 0.01)
(optional, default: 'my_img')
Weiterhin wird beim Initialisieren ein Objekt zurückgegeben, über welches Zugriff auf eine kleine API möglich ist.
/* ****************************************************************************************** * * Das Script kann frei verwendet werden, dieser Kommentar sowie die Nennung des Nicks * müssen jedoch erhalten bleiben. * * Quaese (www.quaese.de), 2010 * ****************************************************************************************** */ var Fader = function(objOpts){ var settings = { w: 120, h: 120, delay: 10, imgs: [], timer: 1000, cls_img: null, handle: null, step: 0.01 } var _this = this; for(var strKey in objOpts) settings[strKey] = objOpts[strKey]; if((typeof settings.id == "undefined") || (settings.imgs.length==0)) return settings; var init = function(){ initFader(); //fadeImgs(); settings.handle = window.setTimeout(function(){fadeImgs();}, settings.timer); } var initFader = function(){ // Bilderzähler initialisieren settings.counter = 0; settings.wrapper = document.getElementById(settings.id); settings.holder = document.createElement("div"); settings.wrapper.appendChild(settings.holder); settings.holder.style.position = "relative"; settings.holder.style.height = settings.h + "px"; // Unteres Bild settings.img1 = new Image(); settings.img1.src = settings.imgs[settings.counter+1]; settings.holder.appendChild(settings.img1); imgStyles(settings.img1, 1); if(settings.cls_img != null) settings.img1.className = settings.cls_img; // Oberes Bild settings.img2 = new Image(); settings.img2.src = settings.imgs[settings.counter]; settings.holder.appendChild(settings.img2); imgStyles(settings.img2, 2); if(settings.cls_img != null) settings.img2.className = settings.cls_img; settings.opac = 1.0; } // Bilder mit CSS absolut positionieren var imgStyles = function(objImg, strZIndex){ objImg.style.position = "absolute"; objImg.style.top = "0px"; objImg.style.left = "0px"; objImg.style.width = settings.w + "px"; objImg.style.height = settings.h + "px"; objImg.style.zIndex = strZIndex; } // Fade-Funktion var fadeImgs = function(){ settings.opac -= settings.step; setOpacity(); if(settings.opac>0){ settings.handle = window.setTimeout(function(){fadeImgs();}, 10); }else{ // Bilder tauschen //settings.img2.style.display = "none"; settings.img2.src = settings.img1.src; settings.opac = 1.0; setOpacity(); // Falls Bildarraygrenze erreicht wurde -> resetten if(++settings.counter >= settings.imgs.length-1) settings.counter = -1; // Quelle des unteren Bildes aktualisieren settings.img1.src = settings.imgs[settings.counter+1]; // Zeitverzögert starten settings.handle = window.setTimeout(function(){fadeImgs();}, settings.timer); } } // Transparenzwerte setzen var setOpacity = function(){ settings.img2.style.MozOpacity = settings.opac; settings.img2.style.opacity = settings.opac; settings.img2.style.filter = "alpha(opacity="+(settings.opac*100)+")"; } /* ***** [Public/API] *************** */ // Stoppen des Faders settings.stop = function(){ window.clearTimeout(settings.handle); settings.handle = null; } // Starten des Faders settings.start = function(){ if(settings.handle != null) return; fadeImgs(); } // Zurücksetzen und erneutes Starten des Faders settings.restart = function(){ window.clearTimeout(settings.handle); settings.handle = null; settings.wrapper.innerHTML = ""; init(); } // Zurücksetzen und erneutes Starten des Faders settings.reset = function(){ window.clearTimeout(settings.handle); settings.handle = null; settings.wrapper.innerHTML = ""; initFader(); } // Objekt initialisieren und Faden anstossen init(); return settings; } // Beispiel-Array mit Bildquellen var arrImgs = ["../bilder/muenze_1.gif", "../bilder/muenze_2.gif", "../bilder/muenze_3.gif"]; window.onload = function(){ // Fader-Objekt initialisieren objFader = Fader({ id: "img_holder", // ID des Holderelements imgs: arrImgs, // Array der Bildquellen (src) w: 120, // (integer, optional) Breite der Bilder h: 120, // (integer, optional) Höhe der Bilder timer: 2000, // (integer, optional) Zeit zwischen den Fade-Vorgängen delay: 10, // (integer, optional) Geschwindigkeit des Fadevorgangs (kleiner = schneller) step: 0.01, // (float, optional) Schrittweite beim Faden (grösser = schneller) cls_img: 'my_img' // (string, optional) CSS-Klasse zum Auszeichnen der Bilder }); }