Miért nincs hatással a Flash mozira a z-index?
Már a Weblabor fórumján is sokszor felvetődött a kérdés, hogy a stíluslappal pozicionált abszolút rétegeket miért takarják ki a Flash mozik, látszólag a
A Macromedia hivatalos állásfoglalásában erről tájékoztatja is a webfejlesztőket:
Azonban ne csüggedjünk, kínálnak rá megoldást, mégpedig a A
A problémát Veerle Pieters Experimenting with Flash content and z-index c. bejegyzésében példákkal is illusztrálja.
■ z-index
egyáltalán nincs rájuk hatással. A kifogásolt viselkedés abból fakad, hogy a Flash bővítmény teszi rá utólag a Flash mozit az oldalra, így az független lesz annak HTML/CSS szerkezetétől.A Macromedia hivatalos állásfoglalásában erről tájékoztatja is a webfejlesztőket:
A Flash movie in a layer on a DHTML page containing several layers may display above all the layers, regardless of the stacking order ("z-index") of those layers.
wmode
attribútum segítségével.
<object type="application/x-shockwave-flash" data="mozi.swf">
<param name="movie" value="mozi.swf" />
<param name="wmode" value="transparent" />
</object>
transparent
opcióval elérhető a kívánt hatás, használhatóvá válik a z-index
. (Tipp: az <embed>
elem deprecated, ne használjuk!) Azonban a történet még nem teljes, ugyanis a Linux nem támogatott platform – egyelőre. Emulációs rétegen (pl. Wine) futtatott böngészők alatt természetesen helyesen jelenítik meg.A problémát Veerle Pieters Experimenting with Flash content and z-index c. bejegyzésében példákkal is illusztrálja.
Mellékhatások
Vagy az itt leírt:
Firefox wmode=transparent is completely screwy and breaks textfields
elrontja a karakter bevitelt Firefox alatt. Pl. Nem tudtam magyar billentyű kiosztás mellett 1.5.0.9-es Firefoxon kukacot írni (altgr + v)
Google Video?
Firefox es Flash verziod?
Nem amiatt
Illusztráció
A Google Video-n valóban fölötte van a réteg, meg kell vizsgálni, hogy miért. (:
wmode opaque?
Egy másik tesztoldal, imho érdemes megnézni. Bár nekem nincs a kezem ügyében linux, hogy azon is teszteljem... :)
Mögötte
Böngészők viselkedése Mac OS X alatt
Camino (1.0.3) - Jó
Firefox (2.0) - Jó
Mozilla (1.7.13) - Jó
MS IE (5.2.3) - Jó!!!
Netscape (7.2) - Jó
Omniweb (5.5.1) - Jó
Opera (9.02) - Rossz (de Transparent módban jó!)
Safari (2.0.4) - Jó
Ahogy a nagy könyvben megvan írva
Windows and Mac OS X
Internet Explorer 3 or higher (Windows)
Internet Explorer 5.1* and 5.2* (Macintosh)
Netscape 7.0*
Mozilla 1.0 or higher*
AOL*
CompuServe*
Miért törölted?
Tehát nem (csak) a böngészőkben van a hiba, hanem a kódolástól is függ, hogy mit és hogyan jelenítenek meg!
Teszteredmény
Windows IE6, IE7, FF: 1. felül a Flash 2. alul a Flash
Viszont ami érdekes hogy nálam Konqueror-ban (3.5.5) mind a két esetben a Flash van alul. Tehát egyetlen böngésző az említettek közül amiben
wmode
nélkül is ok.Megvan a megoldás!!!! Heuréka!
A probléma Linuxon az, hogy a flasht nem a böngésző rajzolja ki, hanem a plugin nyit egy új X ablakot a Mozilla fölé és abba rajzolja ki a flasht. Emiatt a flash mindig a Mozilla által generált tartalom felett lesz.
A Google féle megoldásban azt használják ki, hogy az IFrame-t ugyanígy kezeli a Mozilla. Csak nem flash plugint tesz bele, hanem mégegy Mozillát. Tehát, ha IFrame-be tesszük azt a tartalmat, amit szeretnénk megjeleníteni a Flash felett, akkor meg fog jelenni.
A dolog azért nem ilyen egyszerű, mert ha az oldal betöltésekor már ott az IFrame, akkor a flash mindenképp takarni fogja. A megoldás az, hogy JavaScript-tel rajzoljuk ki az IFrame-et amikor a flash már betöltődött.
A Google erre írt egy JavaScript-et, ami az alap DHTML div-ből kiszedi a tartalmat és kicseréli egy rejtett (display: none) IFrame-re. A méreteket és a pozíciót is átviszi az IFramre. Ezután megjeleníti (display: block). És láss csodát a menü a flash fölött van.
Amin gondolkozom, hogy erre lehetne írni egy automatikus kiterjesztést a Firefoxhoz. Ugyanis a legtöbb oldal nem foglalkozik a Linuxszal (Pl ATI, NVidia...) és szarok a menük...
Már megint a Google viszi a pálmát. Ez a világ legjobb és legfelkészültebb számítástechnikai cége! Mindent megoldanak. Náluk minden megy Linux alatt, Mac alatt is. Még az is, amit senki más nem tud megoldani. Óriási elismerésem nekik. Másik ilyen csoda projectjük az AJAX alapú GoogleMap...
Remélem segítettem, üdv mindenkinek!
Működik
iframe
helyett én javasolnám viszont azobject
használatát, ahogy erről nem régiben volt egy blogmark is.Bővítettem a korábban linkelt demót ezzel a megoldással.
Object
Az Object is így viselkedik, hiszen a flash is egy object. Szóval az is jó, ha meg szeretnél jeleníteni tartalmat a flash fölött.
A Google azért használt iframe-t, mert annak a tartalmát tudod Javascript-ből módosítani. Az általad linkelt blogban nem láttam erre megoldást.
A Google féle megoldásban az a szép, hogy minden a hagyományos módon megy, csak írtak egy scriptet, ami Linuxon kicseréli a div-et az iframe-re.
valami változás így másfél év után?
Flash Player 10 béta 2 + friss böngésző
én opaque -val oldottam meg.
és ha jól dereng, Linux alatt is muxik...
Linux alatt nem
Flash 10, Firefox 3