HTML-CSS Image Preload - Bilder vorladen

Achtung, öffnet in einem neuen Fenster. Drucken

css-html-image-preload-bilder-vorladenEs gibt zahlreiche Möglichkeiten Bilder einer Website im Vorfeld der Darstellung zu laden, damit diese den Seitenaufbau nicht stören. In diesem Tutorial möchte ich Ihnen eine Möglichkeit zeigen, wie Sie ganz ohne Rückgriff auf Javascript oder andere Methoden nur mit CSS und XHTML Bilder vorladen können.

Diese Methode hat den Vorteil, dass Sie zum einen auch bei Usern funktioniert, die Javascript deaktiviert haben und zum zweiten auch in älteren Browsern zum gewünschten Ergebnis führt.

Warum Bilder vorladen?

Nicht jede Website benötigt die Integration einer Preload/Vorlade Technik. Man sollte bei der Gestaltung der Website besonders auf die Größen der zu ladenden Dateien achten (Scripte, HTML, CSS und besonders Bilder). Dies ist einerseits vorteilhaft für die Benutzer Ihrer Website, die bei zu langen Ladezeiten die Website im Regelfall wieder verlassen. Zum anderen achten auch Suchmaschinen seit einiger Zeit verstärkt auf die Performance von Websites und crawlen schnell ladende Sites besser (öfter und tiefer), als Websites mit sehr langen Ladezeiten.

Manchmal kommt es allerdings vor, dass man sehr große Bilder entweder als Element des Layouts oder als Präsentationsmittel auf der Website darstellen möchte. In diesen Fällen empfielt sich der Rückgriff auf eine Preload Technik, um den flüssigen Seitenaufbau für die Benutzer zu gewährleisten.

CSS Image Preload - Bilder vorladen - der Code

Um das Problem des Preloadings besser zu verstehen muss man sich die Lade-Reihenfolge der Elemente vergegenwärtigen:

  1. XHTML
  2. CSS
  3. Grafikdateien der Site
  4. CSS Grafiken (Background Images)

Grafikdateien auf der Website haben also eine höhere Lade Priorität als die CSS Background Images, was einen weiteren Anwendungsfall dieser Technik eröffnet. Gerade die moderen Websites im Web 2.0 Stil arbeiten häufig mit sehr großen Background Images, die man ebenfalls mit dieser Methode vorladen könnte.

Die Methode ist denkbar einfach: Wir erstellen ein DIV mit der ID 'preload', in das wir die vorzuladenden Bilder einfügen. Mittels CSS verstecken wir in einem 2. Schritt dieses DIV Element.

Die Bilder werden also unsichtbar für den Besucher bereits beim Aufruf der DIVs 'preload' vorgeladen und stehen dann beim eigentlichen Inhalt der Website zur Verfügung.

HTML Code

<div id="preload">
<img src="/images/bg1.jpg" alt="Alt Text für Bild 1, preload" />
<img src="/images/bg2.jpg" alt="Alt Text für Bild 2, preload" />
<img src="/images/bg3.jpg" alt="Alt Text für Bild 3, preload" />
</div>

Sie sollten das DIV am Anfang des HTML Codes einfügen, damit es vor dem eigentlichen Seiteninhalt geladen wird.

CSS Code

#preload {
display: none
}
#preload img {
height: 0; width: 0; border: none;
position: absolute;
bottom: 0;
left: 0;
z-index: -30;
}

Zwar genügt vielen Browsern schon DISPLAY:NONE, um die Bilder wie gewünscht zu verstecken, einige ältere Browser stellen die Grafiken dann allerdings als kleine schwarze Punkte dar.

Daher verkleinern wir zusätzlich die Bilder (height und with: 0), entfernen Ihren Rahmen (border: none) und positionieren sie absolut am unteren linken Bildschirmrand, um den gewünschten Effekt in allen Browsern zu erzeugen.

 

Kommentare 

 
#1 Flow-Chi 2011-02-05 13:37
Danke, hat mir sehr geholfen! :)
Zitieren
 
 
#2 Powerade 2011-04-19 01:01
Hat mir SEHR geholfen, einfach und sehr effektiv vielen dank ( lässt die website nicht unprofessionell aussehen da jedes einzelne bild vorlädt, genau das was ich gesucht habe :), btw über google bist du auf einem top pagerank )
Zitieren
 
 
#3 Julia 2011-06-07 23:42
Genau das was ich gesucht habe.
Normalerweise nehme ich nur ein kleines header Bild, aber jetzt hab ich mal größere Hintergrundbild er gebraucht. Hab die schon nicht als png, sondern als gif gespeichert, aber erst mit dem Code sieht das nicht gestückelt aus.
DANKE!!!
Zitieren
 
 
#4 Holger 2011-12-08 00:18
Geht es das Ganze auf der Index Seite für alle Grafiken der Folgeseiten abzufeiern, oder muss ich für jede Seite die gewünschten Grafiken/Bilder vorladen? Also merkt der Browsercache sich die ganz zu Anfang geladenen Objekte?
Zitieren
 
 
#5 LittleHoopoe 2011-12-08 16:12
Und wie bekomme ich die dann wieder sichtbar? ich glaube ich habe da was nicht ganz verstanden-.-
Zitieren
 
 
#6 Marco 2012-01-11 17:14
…mehr geht nicht!
Anschaulich erklärt, alles Nötige an Hintergrundinfo s dabei, tolles, übersichtliches Beispiel des Codes dabei, da bleiben keine Fragen offen.
Problem gehabt, Problem gelöst, ist leider viel zu selten, hier hat´s super geklappt.

Vielen Dank!
Zitieren