Véletlenszerű háttérkép (random background) CSS-ből?
Sokszor rákeresve több PHP megoldást találtam arra, hogy véletlenszerűen változzon a háttérkép minden betöltésnél. Nálam valamiért egyik sem működött, nyilván ennek legfőbb oka az, hogy nagyon kezdő vagyok. De az is lehet, hogy ezek a megoldások nem arra valók, amire nekem kell, ugyanis egy demo DVD-t kell írnom, amin fejezetenként külön mappákban vannak a háttérképek és mindezt egy, a DVD-re másolt Easy Prezentation nevű hordozható böngésző jeleníti majd meg, ami ha jól értem az IE-t használja. (Ezért értelemszerűen kizárt minden olyan megoldás, ami fájlok átnevezésével, vagy tartalmuk megváltoztatásával próbálkozik.) Ilyent még sohasem kellett csinálnom...
Olyan megoldásra van szükségem, amire a CSS fájlból hivatkozhatok és egy adott könyvtárban lévő összes képfájl közül választ véletlenszerűen. Azok a módszerek, ahol a HTML fájlba kell szkriptet beilleszteni, sajnos nem jók, mert nagyon sok a fájl és a képek neve is fejezetenként más-más. Mindenképp a CSS-ből kell megoldanom, mert a stíluslapoknak minden fejezetnél azonos a fájlneve és a tartalma, így gond nélkül bemásolhatók bárhová. A képek mérete egyforma és a mappáik relatív útvonala is mindenhonnan azonos, ha csak ez kell a random-generáló PHP fájlnak.
Minden oldal eleje így néz kiA stilus.css-ben most még ez van:Olyanokkal próbálkoztam, ahol egy PHP fájlt kellett bemásolni a képek könyvtárába és a kép helyett erre a fájlra kellett hivatkozni. De se a HTML-be próbaként beillesztett sima
■ Olyan megoldásra van szükségem, amire a CSS fájlból hivatkozhatok és egy adott könyvtárban lévő összes képfájl közül választ véletlenszerűen. Azok a módszerek, ahol a HTML fájlba kell szkriptet beilleszteni, sajnos nem jók, mert nagyon sok a fájl és a képek neve is fejezetenként más-más. Mindenképp a CSS-ből kell megoldanom, mert a stíluslapoknak minden fejezetnél azonos a fájlneve és a tartalma, így gond nélkül bemásolhatók bárhová. A képek mérete egyforma és a mappáik relatív útvonala is mindenhonnan azonos, ha csak ez kell a random-generáló PHP fájlnak.
Minden oldal eleje így néz ki
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML lang="hu-HU">
<HEAD>
<TITLE>Demo DVD Project</TITLE>
<META content="hu-HU" name=content-language>
<META http-equiv="Content-type" content="text/html; charset=iso-8859-2">
<LINK href="stilus.css" rel=stylesheet type="text/css">
<LINK rel="shortcut icon" href="icon.ico">
<STYLE type=text/css>@import url( "stilus.css" );
</STYLE>
</HEAD>
<BODY class=demodvd>
BODY.demodvd {BACKGROUND: rgb(250,250,150) url('bg001.jpg') scroll top left no-repeat}
<IMG src="rnd-bg.php">
se a CSS-ből url('rnd-bg.php')
nem működött, se Easy Prezentation-ben, se Firefox-ban. Lehet, hogy valami sokkal alapvetőbb hibát vétettem? Van erre megoldás PHP-ben, Javascript-ben, vagy bármiben? Aki csinált már ilyent, annak a segítségét kérem.
Ne csináld...
Egyébként meg az a megoldása a dolognak, hogy fönttartasz x db stylesheetet x db háttérkép hivatkozással és az azokra való hivatkozást (link) véletlenszerűen pakolgatod be PHP-ból a head-be.
css expressions
(ugye én értem jól, hogy ez nem a webre készül hanem valamiféle dvd-s prezentáció lesz?)
lényegében meg tudsz adni egy kis js kódrészletet cssből.
pl: (feltételezve hogy a back0.jpg .. back9.jpg képek közül akarsz választani - nem ellenőrizem csak hasból írom)
egy megoldás
A body stílusát ne stíluslapból vedd, hanem a head részben határozd meg, így beszúrhatsz php scriptet, ami módosítja a háttérképet. Önálló stíluslapban ugye ez nem működik, nem működhet.
Példa:
Az rnd-bg.php pedig tartalmazhatja a random generálást, visszaadva a kiválasztott kép abszolút url-jét pl: "backgrounds/bg_001.jpg".
rnd-bg.php példa:
Hmm...szerver is fut a gépen?
Akkor marad a js,amit ugye a bongészö futtat...
ja tényleg
Én azért írtam php-s megoldást, mert az alapkoncepcióban szerepelt ez a lehetőség. Bár én láttam már olyan wysiwig szekesztőt, ami webszerver nélkül is futtatta a php-s weboldalt (hideg rázott tőle), végülis ez benne lehet egy prezentációs progiban is...
(Amúgy a kódban a $celpont az $hatterkep, csak elirtam bocsi)
talán a javascript...? ...de hogyan?
proclub: Ez sajnos nem az első olyan feladat, amire én is azt mondom elsőre, hogy "Ne csináld", és nyilván nem is az utolsó, amikor ezt nem engedhetem meg magamnak. :)
razielanarki: Ez egy nagyon szimpatikus megoldás! Sajnos sehogy sem bírtam működésre, pedig ez lett volna a legegyszerűbb.
griphons: Attól tartok, hogy Ronyn sejtése bejött, mert sajnos semmilyen PHP módszer nem működött. Akármilyen béna vagyok, a pontosan megadott kódodat akkor sem tudtam volna elszúrni, mégsem működött, ez nyilván az Easy Prezentation hibája. ($katterek rögtön észrevettem, javítottam.) Bocs, ha félreérthető voltam, a PHP nem volt kikötés, csak először olyan megoldásokat találtam, pl. Random Image Rotation.
Találtam egy javascript-et, amivel ugyan cserélődik a háttér, viszont a többi rá vonatkozó beállítás (
scroll top left no-repeat
) elveszik, és az oldal szétesik. :( Ha ezeket nem adhatom meg CSS-ben, akkor hogyan tehetem a HTML fájlba? A nem háttérképre vonatkozó BODY beállítások azért jöhetnek a CSS-ből?Ha nincs olyan javascript, amelyiknek a háttérképek felsorolása helyett a könyvtár relatív útvonalát lehet megadni, akkor még megoldom valahogy, hogy a képek mappáiban mindenhol ugyanannyi és azonos nevű fájl legyen, így mehetnek a szkriptbe a fájlnevek. Segítséget ahhoz kérek, hogy a szkriptet tehetem-e külön fájlba, úgy, mint a CSS-t, és hogy pontosan milyen kódokkal válthatom ki a CSS BODY beállításait HTML-ben?
Köszönöm.
javascriptes random bg
Persze a háttérképek relatív url-jeit meg kell adni a scriptnek, ő nem fogja tudni kibányászni egy adott mappából (én legalábbis nemtom, hogy azt js-tel meg lehet-e oldani)
Ilyen legyen a kódod:
End: Véletlenszerű háttérkép
A végleges kód ilyen lett, a
\'
kellett még, hogy jó legyen: