Johnny má hezkou fotku, na které je kromě šesti hezkých těl i šest hezkých obličejů. Zaúkoloval mě, abych vymyslel takovou věc. Když se najede na hezký obličej myší, objeví se dole pod obrázkem popisek. A ten popisek by se měnil podle toho, nad čím obličejem se kursor myši nachází.
Čím hezčí obličej, tím vtipnější popisek, přičemž jeden obličej (ten vlevo) je výrazně nejhezčí a bude mít tudíž popisek nejvtipnější. Myslel jsem pochopitelně, že po mně chce vymyslet text toho popisku pro obličej vlevo, a proto jsem slíbil, že teda jako beze všeho
Jenže z milého Johnnyho vylezlo, že po mě nechce kreativitu, ale nádeničinu :-). Užuž jsem ho chtěl fakovat a sbalit si karimatku, ale on začal blekotat cosi o tabulkách a rozřezávání, oddělování hlav od těl(!) a javascriptových bublinách.
Probudil se ve mně záchranářský pud, protože Johny mi připadá jako panensky čistý, podobnými prasárnami dosud nezkažený jinoch. Tabulky! Fuj....
Ve skutečnosti se to dělá takhle, s využitím principu Jezevčík. V něm se využívá méně známé skutečnosti, že absolutně posicovaný prvek se vůbec neohlíží na rozměry svého rodiče, může ležet úplně mimo něj.
Pro výukové účely jsem použil obrázek dvou slečen a rozhovor, odposlechnutý (kde jinde?) v šalině. Obrázek tvoří pozadí obalového divu, němž se vše odehrává a rozměry tohoto divu jsou přesně stejné s rozměry obrázku. Tento obalový div musí mít deklarováno position: relative! To je včetně rozměrů provedeno jako inline-styl.
Nad každým obličejem se potom vytvoří průhledný absolutně posicovaný div. Jejich polohu a rozměry určíme tak, aby byl přesně tak akorát. V mém případě jsou dva, Pro názornost jsou opatřeny rámečkem a označeny jako LK a PK. A oba obsahuji další vnořený div, ve kterém je umístěn text. A tyto vnořené divy jsou absolutně naposicovány dolů mimo své rodiče. To je právě výhoda absolutního posicování, ty popisky bychom mohli umístit kamkoliv, klidně i místo titulku celého blogu. Posice i rozměry jsou opět dělány inline-stylem a jsou texty jsou zneviditelněny.
Bohužel inline-stylem se nedá realisovat presudotřída :hover, jediná, kterou jakž takž zvládá JESPR. Proto se musím uchýlit k zápisu ostatních stylů do sekce <style>, která sice musí být v hlavičce stránky (nechápu proč), ale funguje to i tady, v těle. Hover zajišťuje, aby se vnořený text zobrazil pouze, pokud je nad rodičovským divem kursor. Vypadá to takhle:
Najeli jse si myší? Ha ha ha!
Výhodou tohoto řešení je to, že i pokud má někdo styly úplně vypnuté, zobrazí se mu celý dialog v přirozené posloupnosti. Pro názornost sem dám zjednodušenou ukázku sekce se styly:
<style type="text/css">
#levakoza, #pravakoza {position:absolute; border:1px solid;}
#levakoza div, #pravakoza div {visibility:hidden; position:absolute; font-size:200%;}
#levakoza:hover div, #pravakoza:hover div {visibility:visible;}
</style>
Ve skutečnosti jsem tam přidal i efekt se zabarvováním obličejů, aby vás to inspirovalo. Kdo chce vidět, jak je to uděláno, stačí, když si příslušný kus spotu označí a v kontextovém menu dá Zobrazit zdrojový kód výběru, nebo dá Ctrl+U a uvidí to komplet.
Kdo nemá mozillu nebo Operu, ten tyhle funkce asi nemá, ale kdo se chce zabývat jakoukoli tvorbou stránek i jen okrajově, s Exploderem si rozhodně nevystačí, viď Johnny?
Jelikož žiju v domnění, že IE hover vzládá, ani mě nenapadlo to zkoušet. Bohužel mi to tady teď nefunguje. Ale možná je to tím, že mám zakázané úplně všecky funkce IE. Nebo je to tím, že stylová sekce není v hlavičce?
Jestli to nefunguje ani vám, tak byl celej spot na nic a já se mohl už půl dne oddávat tekknu.
Ach jo, než mě zabije Johhny, radši jdu spáchát rezatou sebevraždu. Enjoy!