Trochu selhává automatické pozicování, když je odkaz v tabulce a ta je v divu s position: relative. Ten div možná není podmínkou ;).
xom`s pinion - Tom Hnatovsky Blog
Přichází xbo! Javascriptové náhledy obrázků..
Právě teď vypouštím první verzi Javascriptového nástroje, který ulehčuje uživateli používání stránky s odkazy na obrázky – zobrazuje je v pomocném boxu. Pracovní název celého skriptu byl xomojátka, protože původní idea byla zobrazovat obrázek v plovoucím okně pod odkazem, při najetí kurzoru myši, což vzdáleně připomíná Derova Cotojátka. Potom jsem promýšlel funkčnost čím dál více do hloubky a vznikl mi z toho takový Lightbox, který je otevřenější pro možné zásahy uživatele. A finální název xbo vychází ze „xom`s box“, radši bych použil xbox, ale to by něco připomínalo.. ;o)
Pojďme se podívat na možnosti, které nám celý skript nabízí. xbo se nastavuje přidáváním hodnot do asociovaného pole
settings
, tudíž není těžké si nastavit chování přesně dle potřeb, když znáte možné parametry.
Parametry
V následujících řádcích budu používat pro element, ve kterém se zobrazuje obrázek, názvu box.
-
settings["class"] = "imageView";
Definice atributuclass
, použitého k vlastnímu nastylování boxu. Bez použití se nastaví automatický styl. -
settings["windowID"] = "imageBox";
Definice atributuid
podle kterého bude nalezen box v kódu – tzn. že se nebude vytvářet nový element. Doporučený element jeDIV
. -
settings["action"] = "click";
Definice akce, po které se spustí/ukáže box. Přednastavený jeonmousemove
, Další povolená hodnota je pouze „click“ (zatím). -
settings["autoPosition"] = true;
Booleanovská hodnota určuje zda-li se box pozivuje automaticky – automaticky znamená ihned pod odkazem. -
settings["elementName"] = 'obrazek';
Restrikce funkčnosti skriptu pouze na elementy stejné třídy, na jiné nebudou funkce xbo aplikovány. -
settings["relativePosition"] = true;
Zapnutí relativního pozicování boxu, to znamená, že se objevuje na viditelné pozici stránky (když máte odscrollováno dolů, tak se objeví u horního okraje aktuální pozice stránky.) -
settings["relativePositionX"] = 30;
Definice kolik px od levého okraje stránky se box zobrazí v módu relativního pozicování. -
settings["relativePositionY"] = 30;
Definice kolik px od vrchního okraje stránky se box zobrazí v módu relativního pozicování. -
settings["image"] = true;
Zapnutí zobrazování pouze pro obrázky – momentálně musí být vždy nastavováno na true – figuruje kvůli dalšímu vývoji – práce s textem na odkazovaných stránkách. -
settings["hide"] = true;
Zapnutí automatického schovávání boxu. -
settings["template"] = '<h4>%title%</h4><img src="%href%" alt="%title%"/>';
Definice šablony textu, který se zobrazuje v boxu. Zde figuruje několik proměnných, které se nahrazují údaji z aktivujícího elementuA
. Proměnné jsou%title%
a%href%
(lze odkazovat i přes%src%
při chybné záměně atributů kodérem.)
Šablona ve stávající verzi IMG
, do kterého se bude vkládat obrázek. Při
použití více obrázků v šabloně bude použit první element. Pokud šablona neobsahuje element IMG
, použije se přednastavená.
Ukázky
Pro představu funkčnosti jsem připravil pár ukázek:
- Dynamický náhled obrázku pod odkazem.
- Náhled obrázku v relativně pozivovaném textu po kliknutí – podobné nastavení je použito na mé obchodní prezentaci.
- Dynamický náhled obrázků v pevném boxu – ideální pro fotogalerii.
Vložení do stránky, aktivace
Vložení skriptu do stránky učiňte touto definicí v HEAD
elementu stránky: <script type="text/javascript"
src="xbo.js"></script>
– pokud je nastavení definováno v souboru skriptu, tak nemusíte pro funkčnost nic více přidávat, samo se
vše inicializuje po načtení stránky.
Tak toto je vše z prvního představní nástroje xbo, můžete si ho stáhnout (1.3kB), testovat, používat, samozřejmě, že budu rád za jakékoliv ohlasy – osobně jsem zatím testoval chování v Explorer, Firefoxu a Opeře, předpokládám, že budu ještě drobně ladit pro Konqueror (bohužel poslední dobou nejsem u Linuxu.)
Výhledově bych chtěl dotáhnout nějaké načítací efekty a poladění ve starších verzích prohlížečů, tak mi přejte ať mám trochu čas.. ;o)
Vaše komentáře
Absolutně nefunguje tak jak má. Mám odkaz umístěný v tabulce v divu a náhled se mi vždy zobrazí v levém horním rohu (souřadnice top: 0px, left: 0px)
|3| - reakce na LordSpider: Otázkou je, co znamená, že to má fungovat tak jak má? Jestli tak, jak si představuju já autor nebo dle tvých představ o fungování, tyto dvě množiny se nemusejí překrývat a popis tvého problému je značně obecný, nic neříkající.
Dekuji
wowwwwwww….fakt pecka!!! diky
Ják máte ten druhý příklad.Potřeboval bych aby se to zobrazovalo uprostřed stránky. A to pořád i po zmenšení okna prohlížeče a tak. Tím relativepositionx a y se to dá na pevno. jde to nějak? Děkuji
|7| - reakce na Jakub Matějček: Již to jde ;) Dopsal jsem funkci pro procentuální pozici – ukázka, JS zdroj.
Nastavení se provede definicí:
settings["percentPosition"] = true;
settings["relativePosition"] = 0.5;
settings["relativePosition"] = 0.5;
settings["widthPosition"] = 250;
Hodnota 0.5 říká o kolik procent stránky se box ukáže od levého okraje – tedy o 50%, settings[„widthPosition“] slouží ke korekci, aby se box ukazoval přesně na středu (říká, jak bude nakonec široký) – widthPosition jsem tam dal nekoncepčně, ale skript ve fázi pozicování ještě přesně neví, jak bude výsledek široký. Pokud si nastylujete, že bude mít box width:500px a nastavíte widthPosition také na 500, relativePositionX na 0.5, tak budete mít výsledek přesně ve středu stránky.
no uplně přesněmi to nefunguje ale to se nějak vyladí:)bohužel ale mám ještě jeden problém.když změním šířku boxu tak v IE je pořád stejná..
|10| - reakce na Jakub Matějček: Změnu šířky v CSS nebo tu teoretickou pro xbo? Výše přiložený příklad mi funguje stejně ve všech hlavních prohlížečích včetně ie6 a ie7 nebo i KHTML Swiftu.
a text také nemám v IE vycentrovaný.prostě vubec nepůsobí css na to:)
|13| - reakce na Jakub Matějček: To vypadá na individuální problém v konkrétním CSS..
Ahoj XOM.. bude nejaka ta nova verze? :) dik :)
|16| - reakce na honzalunek: Momentálně mám spoustu práce, takže času nezbývá, ale sepisuji si nápady..
Zdravim, jde to použít i když potřebuji, se aby se cíl zobrazil po najetí na obrázek a ne jen na text, jak máte tady v příkladech?
Díky
Neda sa nastavit aby ten obrazok co sa mi objavi mal najviac vysku 100px lebo nechcem aby sa mi velke obrazky zobrazovali na celej stranke. da sa to nejak urobit?
Jednoduse nastavitelna a chytra vecicka. Ulehcilo mi to znacne kontroly velkeho mnozstvi obrazku v administraci. Diky moc! :)
Ahoj!! Toto je suprovní! Ovšem mám malý problémek v IE :( v lišce šlape suprovně. A můj problém je ten že když mám stránku dlouhou (výpis z DB nekolik set záznamů) a chci si zobrazit obrázek posledního záznamu, tak se mi obrázek ukáže úplně nahoře podle nastavení. Newím jak docílit toho, aby se obrázek ukázal někde viditelně a já nemusel vždycky vyjíždět az na vršíček stránky. Při použití opravy co tady byla vložena (pozicování procentuálně) se mi to zase ukáže třeba někde hluboko uprostřed. Prosím pomožte bo tuto věcičku velmi nutně potřebuji! Předem dík za jakékoliv rady!
Zdravím mám problém s boxem. nefunguje to korektně ani tady v příkladech jak koukám. Při kliknutí na náhled obrázku se box nezobrazí okolo full obrázku. po druhém pokliku je vše v pořádku a box se rozšíří okolo celého obrázku, ale až op druhém poklikání na náhled.
Katty 16.10.06 08:20
Ty jo… :o)) Cool!