Du bist nicht angemeldet (anmelden)
Seite 1
Erledigt: Hintergrundbild auslesen
Editiert: 12.04.12, 17:30 Uhr
Sehr geehrte Gemeinde,ich habe hier ein
Folgendes:
Ich habe hier ein kleines Script, das per jQuery das Hintergrundbild im BODY ändert.
Das habe ich auch so per Zweizeiler hinbekommen.
var images = ['bg-01.png', 'bg-02.png', 'bg-03.png', 'bg-04.png', 'bg-05.png'];$('body').css({'background-image': 'url(/layout/cyt/img/' + images[Math.floor(Math.random() * images.length)] + ')'});
Jetzt kommt der Clou:
Je nach Hintergrundbild, soll ein anderes Div, das sich beliebig auf der Seite befindet, eingeblendet werden.
Sprich:
ist bg-02.png geladen, soll das div mit der class=“bg-02“ sichtbar sein,
ist bg-03.png geladen, soll das div mit der class=“bg-03“ sichtbar sein
usw...
Hat jemand eine Idee, wie ich das synchronisiert bekomme?
Mein Latein ist hier leider am Ende
Bin über jede Hilfe sehr dankbar.
Editiert: 12.04.12, 18:35 Uhr
// Bild laden, ergibt sowas wie: url(http://domain.de/image_01.jpg), am besten einmal ausgeben lassenvar bgImage = $('body').css('background-image');// Nummer filternbgImage=bgImage.replace('url(http://domain.de/image_','').replace('.jpg)','');// alle layer ausblenden$('.div-bg').hide();// und einzelnen layer einblenden$('.div-bg'+bgImage).show();
Beispiel: http://jsfiddle.net/rxDrh/1/
hey, vielen lieben Dank, caZpa!
habe das so interpretiert:
irgendwie, mag das aber noch nicht so ganz.
wenn ich das richtig verstanden habe, wird zuerst die url des hintergrundbildes ausgelesen.
diese wird dann verändert bis nur noch der dateiname ohne .png zurückbleibt.
diese variable wird dann am ende benuzt um das div sichtbar zu machen, oder?
habe das so interpretiert:
var images = ['bg-01.png', 'bg-02.png', 'bg-03.png', 'bg-04.png', 'bg-05.png'];$('body').css({'background-image': 'url(/layout/cyt/img/' + images[Math.floor(Math.random() * images.length)] + ')'});// Bild laden, ergibt sowas wie: url(http://domain.de/image_01.jpg), am besten einmal ausgeben lassenvar bgImage = $('body').css('background-image');// Nummer filternbgImage.replace('url(http://www.billigerluxus.de/layout/cyt/img/','').replace('.png)','');// alle layer ausblenden$('.div-bg-01').hide();$('.div-bg-02').hide();$('.div-bg-03').hide();$('.div-bg-04').hide();$('.div-bg-05').hide();// und einzelnen layer einblenden$('.div-'+bgImage).show();
irgendwie, mag das aber noch nicht so ganz.
wenn ich das richtig verstanden habe, wird zuerst die url des hintergrundbildes ausgelesen.
diese wird dann verändert bis nur noch der dateiname ohne .png zurückbleibt.
diese variable wird dann am ende benuzt um das div sichtbar zu machen, oder?
hm ne, so geht es natürlich einfacher
du kannst doch die Zufallszahl in einem Extraschritt ermitteln und somit zwischenspeichern, dann kannst du sie auch für die Layer benutzen
aber bitte nicht x–mal
ausführen
wenn du den layern alle eine Extraklasse gibst (hier: div-bg), kannst du sie in einem Schritt ausblenden.
Oder hierarchisch, wenn sie ein Elternelement haben
var images = ['bg-01.png', 'bg-02.png', 'bg-03.png', 'bg-04.png', 'bg-05.png'],// Zufallszahl speichernrandomIndex = Math.floor(Math.random() * images.length);// Bild holen$('body').css({'background-image': 'url(/layout/cyt/img/' + images[randomIndex] + ')'});// alle layer ausblenden$('.div-bg-01').hide();$('.div-bg-02').hide();$('.div-bg-03').hide();$('.div-bg-04').hide();$('.div-bg-05').hide();// und einzelnen layer einblenden$('.div-bg-0'+randomIndex ).show();
aber bitte nicht x–mal
$('.div-bg-xx').hide();
ausführen
wenn du den layern alle eine Extraklasse gibst (hier: div-bg), kannst du sie in einem Schritt ausblenden.
<div class="div-bg div-bg-01"></div><div class="div-bg div-bg-02"></div><div class="div-bg div-bg-03"></div><div class="div-bg div-bg-04"></div><div class="div-bg div-bg-05"></div>//alle ausblenden$('.div-bg').hide();
Oder hierarchisch, wenn sie ein Elternelement haben
<div id="bg-layer"><div class="div-bg-01"></div><div class="div-bg-02"></div><div class="div-bg-03"></div><div class="div-bg-04"></div><div class="div-bg-05"></div></div>//alle ausblenden$('#bg-layer>div').hide();
das sieht schonmal sehr gut aus 
nur dass er sich noch um -1 verzählt.
also wenn die grafik 02 geladen wird, blendet er das div 01 ein.
wenn die grafik 01 geladen wird, versucht er 00 einzublenden. (also passiert nichts)
nur dass er sich noch um -1 verzählt.
also wenn die grafik 02 geladen wird, blendet er das div 01 ein.
wenn die grafik 01 geladen wird, versucht er 00 einzublenden. (also passiert nichts)
jetzt hab ich es verstanden 
habe einfach alles bei 0 anfangen lassen
caZpa! vielen herzlichen dank für deinen einsatz!
habe wieder etwas dazugelernt
habe einfach alles bei 0 anfangen lassen
caZpa! vielen herzlichen dank für deinen einsatz!
habe wieder etwas dazugelernt
caZpa schrieb am 12.04.12, 19:58 Uhr:
Quelltext in Zwischenablage kopieren
$('#bg-layer>div').hide();
das „>“ braucht man aber nicht :smartypants
was die null im bild name angeht → Math.ceil anstatt Math.floor
