Bilder in JavaScript Beispiel 5: Mit JavaScript Bilder einblenden / ausblenden

Folgendes JavaScript-Beispiel demonstriert die Möglichkeiten zum Einblenden und Ausblenden von Bildern. Hier werden die Bilder per Funktionsaufruf entweder umgehend oder aber in einem Intervall animiert – über die CSS-Eigenschaften – angezeigt bzw. versteckt (show / hide). Das Bild, mit dem diese Operationen durchgeführt werden trägt die ID showhide, worüber es im Script angesprochen wird. Zur Demonstration der jeweiligen Funktion klicken Sie bitte die Links im Beispiel unten an. Bitte beachten Sie auch unsere Beispiele zum Ein- und Ausblenden von DIVs.

Die erste Funktion mit dem Namen hide_picture kann dazu verwendet werden, ein im Parameter übergebenes Bildobjekt auszublenden. Übergeben wird nicht die ID des Bildelements sondern ein zuvor per getElementById, getElementsByTagName oder getElementsByName ermitteltes Bild-Objekt – siehe Aufruf der Funktion im ersten und zweiten Beispiellink. GetElementById ist ein wichtiger Bestandteil des Document Object Model (DOM). Innerhalb der JavaScript-Objekthierarchie ist diese Methode unter Anderem dem Document-Object untergeordnet. Nachdem die Funktion sich davon überzeugt hat, dass es sich beim übergebenen HTML-Elementobjekt um ein IMG-Element handelt, wird das Element durch Anpassung des Style-Objekts ausgeblendet. Der Browser versteckt das Bild automatisch nachdem der Visibility-Eigenschaft im Style-Objekt des IMG-Elements der Wert hidden zugewiesen wurde. Handelt es sich nicht um ein Bildelement, so passiert nichts.

Mit der zweiten Funktion im unteren JavaScript-Code können Sie mit JavaScript Bilder anzeigen, nachdem diese zuvor mit Hilfe der Funktion hide_picture ausgeblendet wurden. Im Prinzip geschieht hier dasselbe, wie in der zuvor beschriebenen Funktion. Einziger Unterschied ist, dass die Visibility-Eigenschaft nicht auf hidden, sondern auf visible gesetzt wird, wodurch das Bild umgehend wieder im Fenster angezeigt wird.

Weiter unten im Script wird eine Funktion definiert, die in der Lage ist ein Bildelement schrittweise ein- oder auszublenden (fade-in und fade-out Effekt, wordurch der Eindruck eines animierten Einblendens bzw. Ausblendens entsteht. Als Parameter erwartet die Funktion zum Einen die ID (als String) des ein- bzw. auszublendenden HTML-Elements und die Schrittweite, mit der das Bild ein- oder ausgeblendet werden soll. Der zweite Parameter gibt an, in welchen Schrittweiten der Vorgang ablaufen soll – die Skala läuft von 0 (volle Transparenz; Ausgeblendet) bis 1 (keine Transparenz; vollständig Eingeblendet). Hier machen Werte unterhalb von null – etwa 0.05, wie im Beispiel verwendet – Sinn. Je kleiner der absolute Wert, desto feiner und damit langsamer erfolgt der Effekt. Wird ein negativer Wert angegeben, so wird ausgeblendet, während ein positiver Wert das Bild einblendet.

In der Funktion wird als erstes per if-Statement geprüft, ob die Schrittweite einen sinnvollen Wert enthält und die Verarbeitung gegebenenfalls nach Anzeige einer Fehlermeldung in einer Alert Box abgebrochen, wenn dem nicht so ist. Der eigentliche Vorgang des Einblendens oder Ausblendens wird auch hier wieder mittels Intervallverarbeitung über die Methode setInterval gestartet. Auch hier wird wieder auf die Eigenarten der unterschiedlichen Browseranwendungen eingegangen, wenn es um die Ermittlung der Transparenz eines Bildes geht (Siehe Beispiel 6 - Mit JavaScript Bilder überblenden).

Bei jedem Aufruf der Funktion fade_in_out wird das angegebene Bildelement Schritt für Schritt über seine Style-Eigenschaften transparenter bzw. weniger transparent gemacht. Ist der Endzustand (vollständig eingeblendetes bzw. ausgeblendetes Bild) erreicht, so wird der Intervall mit der Methode clearInterval beendet und die Funktion künftig nicht mehr aufgerufen. Ebenso wie setInterval gehört clearInterval zum in JavaScript vordefinierten Window-Object.

Das Aus- und Einblenden von HTML-Elementen kann aber nicht allein durch Anklicken (durch das onClick-Event oder direkt per href) eine HTML-Elements angestossen werden. Sie können auch einen automatischen Ausblendvorgang durch das onLoad-Event, welches direkt nach dem Laden der Seite ausgelöst wird, durchführen lassen. Dies ist praktisch, wenn Sie ein Bild beispielsweise nur direkt nach dem Laden einer Seite darstellen wollen. Unter Verwendung der Methode setTimeout können Sie das Element nach einem bestimmten Timeout automatisch ausblenden.

Zu solchen und ähnlichen Zwecken bietet das JavaScript-Objekt Event und die in JavaScript auslösbaren Events viele verschiedene Möglichkeiten. Einige der von JavaScript unterstützten Events werden auch auf dieser Seite beschrieben. Beachten Sie hierzu bitte die seitliche Navigation. Hier ist neben dem onLoad-Event auch das onClick-Event zu finden.

Die in dem Beispiel genutzen Bilder wurden freundlicherweise von www.KunstundReisen.de zur Verfügung gestellt. Falls Sie sich für Städtereisen nach Italien – insbesondere nach Sizilien – interessieren, dann klicken Sie sich doch mal rein.

<img id="showhide" alt="" src="/javascript-demos/java-script-galerie/photos/nr7_k.jpg"><br>
<a href="javascript:hide_picture (document.getElementById ('showhide'))" title="">Bild ausblenden</a><br>
<a href="javascript:show_picture (document.getElementById ('showhide'))" title="">Bild einblenden</a><br>
<a href="javascript:fade_in_out ('showhide', -0.05)" title="">Bild schrittweise ausblenden</a><br>
<a href="javascript:fade_in_out ('showhide', 0.05)" title="">Bild schrittweise einblenden</a>
<script language="javascript" type="text/javascript">
<!-- // JavaScript-Bereich für ältere Browser auskommentieren
// Bildobjekt über die Visibility-Eigenschaft des Style verstecken
function hide_picture (element) {
  // Bild angegeben?
  if (typeof element == 'object' && element.tagName == 'IMG')
    // Style-Eigenschaft zum Ausblenden setzen
    element.style.visibility = 'hidden';
}

// IMG-Element per Style sichtbar machen
function show_picture (element) {
  // Handelt es sich um ein Bildelement?
  if (typeof element == 'object' && element.tagName == 'IMG')
    // Bildelement einblenden
    element.style.visibility = 'visible';
}

// Funktion kann mit JavaScript Bilder schrittweise (animiert) ausblenden
// Die Element-ID des auszublendenden Elements wird als Zeichenkette angegeben.
// Der zweite Parameter gibt die Schrittweite an, mit der das Bild ein- oder
// ausgeblendet werden soll. Negative Werte blenden aus; Positive blenden ein
function fade_in_out (element_id, step) {
  // Intervall noch nicht gestartet?
  if (!this.proc) {
    // Schrittweite muss positiv oder negativ sein, da
    // sonst weder aus- noch eingeblendet wird.
    if (step == 0) {
      // Fehlermeldung und Beenden, wenn Schrittweite == 0
      alert ('Schrittweite darf nicht 0 sein!');
      return;
    }
    // Ansonsten kann die Animation gestartet werden.
    this.proc = window.setInterval ('fade_in_out(\'' + element_id + '\', ' + step + ')', 50);
  }
  else {
    // Wir befinden uns bereits in der Ein- Ausblendphase
    var e = document.getElementById (element_id);
    // Variable zur Speicherung der Transparenz des Elements
    var opacity;
    // Opera, Mozilla & Co. verwenden die Style-Eigenschaft opacity
    if (!e.filters)
      opacity = !e.style.opacity ? step > 0 ? 0 : 1 : parseFloat (e.style.opacity);
    // Ansonsten wird der Alpha-Filter von IE verwendet
    else
      // Opacity wird beim IE in Prozent angegeben
      opacity = !e.filters.alpha.opacity ? step > 0 ? 0 : 1 : parseFloat (e.filters.alpha.opacity) / 100;
    // Zieltransparenz erreicht? (0, wenn ausgeblendet wird; 1, wenn eingeblendet wird)
    if ((step < 0 && opacity != 0) ¦¦
        (step > 0 && opacity != 1)) {
      // Transparenz um Schrittweite anpassen
      opacity += step;
      // Beim setzen der neuen Transparenz wieder auf die verschiedenen Browser auchten!
      if (!e.filters)
        e.style.opacity = step < 0 ? opacity < 0 ? 0 : opacity : opacity > 1 ? 1 : opacity;
      else
        e.filters.alpha.opacity = step < 0 ? opacity < 0 ? 0 : opacity * 100 : opacity > 1 ? 100 : opacity * 100;
    }
    else {
      // Endzustand (vollständig ein- bzw. ausgeblendet) erreicht!
      // Prozess kann nun abgebrochen werden.
      window.clearInterval (this.proc);
      this.proc = null;
    }
  }
}
// -->
</script>


Bild ausblenden
Bild einblenden
Bild schrittweise ausblenden
Bild schrittweise einblenden

Letzte Posts aus unserem Forum

Stream musik

Hallo, ich bin auf der Suche nach einem Script, mit dem ich einen Leser für Audio-Spuren in eine Html-Webseite einfügen kann. Ich brauche dabei ... » mehr

von Finlay am Sonntag, 22. Januar 2012 22:52 in JavaScript - bisher 1 Antwort
Letzter Beitrag: Montag, 23. Januar 2012 17:02 von alm

Hallo, wenn es um einen MP3-Player geht, dann sollte jplayer das Richige sein. Einfach mal den Suchschlitz der Suchmaschine Deiner Wahl nutzen. ... » mehr

Überbelnd effect in javascript gallerie

ich habe hier einie gallerie die funktioniert problem los aber hat noch kein über belnd effect jedoch würde ich diesen gerne einfügen aber ich habe ... » mehr

von faebe am Freitag, 20. Januar 2012 20:19 in JavaScript - noch nicht beantwortet

XML per JavaScript verarbeiten - IE

Hallo! Vielen Dank für das super kommentierte Script-Beispiel zur Weiterverarbeitung von XML-Dateien per JavaScript: ... » mehr

von gn0me am Freitag, 11. März 2011 19:03 in JavaScript - noch nicht beantwortet

Galerie Erweiterung

Hi, zu erst mal ein Lob an Eure Galerie. Nun habe ich allerdings eine Frage um die Galerie eventuell zu erweitern. Derzeit wird auf meiner Seite ... » mehr

von G-RuN am Dienstag, 25. Januar 2011 17:13 in JavaScript - bisher 8 Antworten
Letzter Beitrag: Dienstag, 1. Februar 2011 17:11 von G-RuN

Hat sich erledigt. Mir haben noch die Zuweisung von der Variablen anzahl_bilder und anzahl_thumbnails gefehlt. Grüße, ... » mehr

bei submit ein neues Fenster öffnen

Hallo, ich habe hier ein kleines Problem und ... » mehr

von Kallchen am Freitag, 14. Januar 2011 23:07 in JavaScript - bisher 3 Antworten
Letzter Beitrag: Samstag, 15. Januar 2011 12:47 von alm

window.location = "_blankeineseite.html"; Das funktioniert auf keinen Fall. Die Location-Eigenschaft muss eine URL enthalten und wird bei ... » mehr



¬ Insolvenzrecht