Nur CSS-Bild-Preloading

Avatar of Chris Coyier
Chris Coyier am

Ein wichtiger Grund für die Verwendung von Image Preloading ist, wenn Sie ein Bild für die Hintergrund-Bild eines Elements bei einem MouseOver- oder :hover-Ereignis verwenden möchten. Wenn Sie dieses Hintergrund-Bild nur im CSS für den :hover-Zustand anwenden, wird dieses Bild erst beim ersten :hover-Ereignis geladen, und somit gibt es eine kurze, ärgerliche Verzögerung zwischen dem Überfahren des Bereichs mit der Maus und dem tatsächlichen Erscheinen des Bildes.

Technik #1

Laden Sie das Bild im normalen Zustand des Elements, verschieben Sie es nur mit der Hintergrundposition. Bewegen Sie dann die Hintergrundposition, um es beim Hover anzuzeigen.

#grass { background: url(images/grass.png) no-repeat -9999px -9999px; }
#grass:hover { background-position: bottom left; }

Technik #2

Wenn das betreffende Element *bereits* ein Hintergrundbild hat und Sie dieses Bild *ändern* müssen, funktioniert das obige nicht. Typischerweise würden Sie hierfür ein Sprite (ein kombiniertes Hintergrundbild) verwenden und nur die Hintergrundposition verschieben. Aber wenn das nicht möglich ist, versuchen Sie Folgendes: Wenden Sie das Hintergrundbild auf ein anderes Seitenelement an, das bereits verwendet wird, aber kein Hintergrundbild hat.

#random-unsuspecting-element { background: url(images/grass.png) no-repeat -9999px -9999px; }
#grass:hover { background: url(images/grass.png) no-repeat; }

Die Idee, neue Seitenelemente für diese Preloading-Technik zu erstellen, wie #preload-001, #preload-002, könnte Ihnen in den Sinn kommen, aber das widerspricht eher dem Geist der Webstandards. Daher die Verwendung von Seitenelementen, die bereits auf Ihrer Seite vorhanden sind.

Ich hatte die Idee, dasselbe Element zu verwenden und nur die :after-Pseudoklasse zu nutzen, um das Bild zu laden, sodass Sie nicht auf genügend zusätzliche hintergrundfreie Bilder auf Ihrer Seite angewiesen sind, um damit zu arbeiten, aber aus irgendeinem Grund wollten Sie sie nicht richtig vorladen.

Mehr

Sehen Sie sich diesen Artikel an, um weitere Techniken, einschließlich JavaScript, zu erfahren.