JS tooltip

O možnosti vytvoření lepšího atributu title čistě v CSS už jsem psal. Tento článek pojednává o JavaScriptovém řešení.

Zatímco u obyčejných obsahových webů doporučuji obyčejné title popisky spíš nepoužívat (text napsat do závorky). U webových aplikací, kde jsou k ovládání často dostupné jen ikony, je vysvětlující tooltip naopak vítaná záležitost.

Výchozí title trpí pro tuto potřebu zásadním nedostatkem – neobjevuje se ihned. Návštěvník tedy najede nechápavě na ikonu, nic se zdánlivě neděje, takže často odjede pryč, aniž by se mu popisek objevil.

Na první pohled by se CSS tooltip mohl zdát jako dostatečný. Nicméně v případě pokročilejších funkcí v praxi dřív nebo později narazíme na limity CSS.

  1. CSS tooltip nastavuje elementům, které mají mít popisek, relativní posici. Máme-li tedy element posicovaný absolutně, budeme muset řešit přebíjení těchto hodnot.

  2. Potřebujeme-li pro element overflow: hidden, je to konečná, protože se tím ořízne i popisek.

  3. JavaScriptem lze zajistit inteligentní umístění tam, kde je místo. U CSS řešení se umístění bude muset určovat ručně.

  4. Budeme-li chtít popiskem pohybovat při pohybu nad elementem, CSS na to bude krátké.

  5. U uživatelského rozhraní fungující ve více vrstvách bude v CSS dost obtížné zajistit, aby se vše překrývalo, jak má.

Hotové řešení

Hotové řešení jednoduchého popisku. Projde všechny title na stránce, nahradí je data-atributy – to proto, aby původní popisky neotravovaly.

Jako potomek elementu <body> se vytvoří element pro zobrazování popisku. Ten se nakonec při najetí na značku s popiskem objeví na posici této značky.

Při odjetí myši se s menší časovou prodlevou popisek skryje.

Text s prvním a druhým popiskem.

A ještě text s třetím a čtvrtým popiskem.

Samostatná živá ukázka

To je všechno. Líbil se vám článek a chcete se dozvědět, až vyjde další?

Sledujte:

 

Připomínky mi pište do komentářů ↓

Fixní postranní panel

Jak vytvořit fixovaný banner?

JavaScriptové řešení prvku, který při rolování zůstane stále viditelný.

Aktivování/deaktivování okna

Zachycení aktivování a deaktivování okna v JS

V JavaScriptu lze relativně snadno reagovat na aktivování nebo deaktivování okna/záložky/tabu.

Baterka v CSS a JavaScriptu

Vytvoření efektu baterky v CSS a JS

Jak jednoduše vytvořit na stránce efekt baterky? Tedy ztmavit web a prohlížet ho jakýmsi průzorem.

Test existence obrázku JavaScriptem

Ověření existence obrázku pomocí JS

Jak JavaScriptem ověřit existenci obrázku?

Načtení obrázku, až když je potřeba

Zpožděné načtení obrázku, až když je potřeba

Kromě potřeby nahrát obrázek dopředu (preload), aby byl v době použití 100% připravený, může být potřeba opačná – načíst jej, až v momentě, kdy je potřeba. Z důvodu nemrhání datovým přenosem.

Komentáře