Die Idee hier ist, das Erscheinungsbild einer Diashow ohne Karussell zu erstellen. Mit anderen Worten, wir machen eine Reihe von Bildern auf der Folie von links nach rechts und wiederholen sie, sobald das Ende der Bilder erreicht ist. Der Trick ist, dass wir ein einzelnes Hintergrundbild mit CSS-Animationen verwenden, um (…)
Die Idee hier ist, das Erscheinungsbild einer Diashow ohne Karussell zu erstellen. Mit anderen Worten, wir machen eine Reihe von Bildern auf der Folie von links nach rechts und wiederholen sie, sobald das Ende der Bilder erreicht ist.
Der Trick besteht darin, dass wir ein einzelnes Hintergrundbild mit CSS-Animationen verwenden, um es über den Bildschirm zu verschieben und zu wiederholen, wenn es fertig ist. Dies erzeugt die Illusion einer Bildergalerie, wenn wir wirklich ein einzelnes Bild verwenden.
HTML einrichten
Hier ist ein Entwurf, wie unser HTML strukturiert werden muss:


Es gibt zwei Elemente, mit denen wir arbeiten: das eine, das wir aufrufen und .container
das genau der Breite des Ansichtsfensters entspricht, und das andere, das wir aufrufen und .sliding-background
das sich hinter dem befindet .container
und überläuft. Im Wesentlichen verwenden wir das .container
als Maske, um die gesamte Breite des zu verbergen, .sliding-background
wenn es über den Bildschirm rollt.
Das heißt, wir müssen nur zwei Elemente im HTML-Markup erstellen:
Positionieren der Elemente
Lassen Sie uns fortfahren und CSS hinzufügen, das unsere beiden Elemente korrekt positioniert.
.container ( overflow: hidden; ) .sliding-background ( height: 500px; width: 5076px; )
Wir .container
verwenden die overflow
Eigenschaft, die alles verbirgt, was außerhalb visuell enthalten ist. Stellen Sie es sich wie eine Ernte auf einem Foto vor. Es kann zusätzliches Material außerhalb des Containers geben, aber der Container verhindert, dass wir es sehen.
Hier .sliding-background
kommt unser ins Spiel. Es ist auf eine lächerliche Breite eingestellt, die die meisten Ansichtsfenster überlaufen würde. Und das ist der Trick: Es sollte etwas sein, das den Container überlaufen würde. In diesem Fall verwenden wir eine etwas willkürlich gewählte 5076px
Breite, die die meisten Browser-Ansichtsfenster überlaufen sollte.
Hintergrundbild erstellen
Wir brauchen ein Bild, wenn wir die Illusion einer Diashow-Galerie erzeugen, oder? Das ist unsere nächste Aufgabe.
Erinnern Sie sich, wie wir erwähnt haben, dass die etwas willkürlich gewählte 5076px
Breite für den gleitenden Hintergrund? Nun, es ist willkürlich, aber beabsichtigt in dem Sinne, dass es gut durch 3 teilbar ist, was in das Timing für eine minutenlange Schleife passt, die etwas später auftauchen wird. Das heißt, die Leinwand für unser Hintergrundbild ist 5076 / 3
oder 1692px
. Am Ende wiederholt sich unser Hintergrund in einer Endlosschleife insgesamt dreimal in einer Minute. Mathe für den Sieg!
Die 500px
Höhe ist wirklich beliebig. Das kann alles sein, was Sie wollen und solange es auch die tatsächliche Größe der Hintergrundbilddatei ist.
Die Photoshop-Datei, mit der zu Beginn dieses Kapitels das Hintergrundbild für die Demo erstellt wurde, kann heruntergeladen werden, wenn Sie nach einem Ausgangspunkt suchen.
Sobald das Bild gespeichert (und optimiert!) Wurde, verwenden wir Folgendes als Hintergrundbild im CSS:
.sliding-background ( background: url("… path/to/image") repeat-x; height: 500px; width: 5076px; /* The image width times 3 */ )
Großartig! Das gibt uns das gigantische Bild, das über den Container läuft und jetzt verwendet werden kann, um ad infinitum über den Bildschirm zu scrollen.
Hintergrund animieren
Okay, lass uns das Ding bewegen. Wir möchten, dass es in einer Schleife, die sich immer wieder wiederholt, von links nach rechts verläuft, um einen nahtlosen Effekt zu erzielen, bei dem das Bild für immer erhalten bleibt.
Definieren wir zunächst die CSS-Animation:
@keyframes .slide ( 0%( transform: translate3d(0, 0, 0); ) 100%( transform: translate3d(-1692px, 0, 0); /* The image width */ ) )
Wir verwenden die transform
Eigenschaft, um das linke Bild am linken Rand des Containers zu positionieren, wenn die Animation beginnt.


Bis die Animation abgeschlossen ist, hat sie die Position negativ (von links nach rechts) um einen Betrag verändert, der der exakten Breite unseres Bildes entspricht. Und da das .sliding-background
dreimal so breit wie das eigentliche Bild ist, wiederholt sich das Bild dreimal zwischen 0% und 100%, bevor es erneut wiederholt wird.
Hinweis: Der Grund, warum wir eine zusätzliche verwenden
überhaupt nicht background-position
auf der Hauptseite zu animieren
ist so, dass wir eine Animation verwenden können transform
, um die Bewegung zu machen, die viel performanter ist.
OK, lassen Sie uns die Sache abrunden, indem wir unsere slide
Animation für die .sliding-background
Klasse aufrufen :
.sliding-background ( background: url("… path/to/image") repeat-x; height: 560px; width: 5076px; animation: slide 60s linear infinite; )
Die animation
Eigenschaft weist den Benutzer .sliding-background
an, die slide
Animation zu verwenden und jeweils eine Minute lang in einer linearen Endlosschleife auszuführen.
Alles zusammenfügen
.container ( overflow: hidden; ) .sliding-background ( background: url("… path/to/image") repeat-x; height: 560px; width: 5076px; animation: slide 60s linear infinite; ) @keyframes slide( 0%( transform: translate3d(0, 0, 0); ) 100%( transform: translate3d(-1692px, 0, 0); ) )