Wechselndes Hintergrundbild in HTML?

2 Antworten

Da du ja eh mit mit CSS3 arbeitest, auch dabei bleiben kannst. Sprich eine Keyframe Animation erstellst, in der letztendlich die einzelnen Hintergrundbilder eingefügt werden. Sieht dann folgendermaßen aus:

@keyframe bgChanger {
 0%   {background-image: url(path/bild1.jpg);}
 50%  {background-image: url(path/bild2.jpg);}
 100% {background-image: url(path/bild3.jpg);}
}

Wenn du mehr Hintergrundbilder einbinden möchtest, einfach weitere Frames anlegst. Bei fünf Bildern z.B. bei 0%, 25%, 50%, 75% und 100%. Eigentlich recht simpel und nur noch die Animation verwenden musst:

selector {
 animation: bgChanger 10s infinite;
 background-size: cover;
}

Die Vendor Prefixes habe ich mal weg gelassen. Die kannst du ja selber dazu schreiben. Wenn du häufiger solche Spielereien bastelst, dich mit einem CSS Preprocessor wie LESS, Sass oder Stylus anfreunden solltest. Ich selber nutze fast ausschließlich Sass mit alter Syntax. Da kann man solche Keyframe-Animationen wunderbar als via mixin zusammenstricken. ;)

LG medmonk 

danke, werde ich gleich mal ausprobieren

0

leider funktioniert es nicht :/

0
@Magixmisch

Dann machst du etwas falsch. Wenn du es wie oben beschrieben festlegst, es auch funktioniert. Ansonsten mal folgenden Artikel durchlesen oder dich mehr mit CSS3 Keyframe Animation beschäftigen solltest. 

https://goo.gl/k3TXkw

In dem Artikel sind auch Beispiel-Dateien enthalten. Lade dir das Zip-Archiv herunter, entpacke es und adaptiere lediglich den Code bzw. schreib in nach deinen Vorstellungen um. Falls du danach immer noch Probleme haben solltest, dich gerne melden kannst. 

0

Wenn du es in sass / scss umsetzen möchtest, rate ich dir zu einem each-Loop.

$all: 3; // Gesamtanzahl der Bilder;
animation: 1s name infinite;
@keyframes name {
    @each $num, $pic in (1, 'path/pic1.jpg'), (2, 'path/pic2.jpg'), (3, 'path/pic3.jpg') {
     $num / $all * 10 {
          background-image: url($pic);
}
}
}

Nun müsstest du in Zukunft nur noch den array ergänzen und die Variable erhöhen, statt jedes Mal den Prozentsatz zu ändern, background-image zu schreiben, usw.

Was da geschieht ist simpel. Das @each schaut in seiner Liste nach und wiederholt das Angegebene so lange, bis nichts mehr in der Liste ist. Der Inhalt der Liste wird chronologisch in die Variablen $num und $pic eingesetzt.

Sry für die Unordnung, am Handy gibt es kein Indentation tool.

0

Dafür brauchst Du JavaScript. Genauer gesagt einen Timer der alle X Sekunden das per CSS hinterlegte Hintergrundbild ändert. Schau dir dazu z.B. mal dieses Tutorial an: https://wiki.selfhtml.org/wiki/JavaScript/Tutorials/Fader-Framework/Bilderslideshow

Woher ich das weiß:Berufserfahrung – mit dem Internet verbunden seit 1993

Dafür brauchst Du JavaScript. Genauer gesagt einen Timer der alle X Sekunden das per CSS hinterlegte Hintergrundbild ändert.

Falsch, man braucht dafür nicht zwingend JavaScript. Auch mit reinem CSS3 ist so etwas möglich. Stichwort: CSS3 keyframe animation. Kleines Beispiel? Kein Problem... ;)

@keyframes bgChanger {
0% {background-image: url(img/bild1.jpg);}
50% {background-image: url(img/bild2.jpg);} 100% {background-image: url(img/bild3.jpg);}
} selector { animation: bgChanger 10s infinite; }

Die Vendor Prefixes habe ich jetzt mal weg gelassen. 

LG medmonk 

1