Scrollujicí text na stránce pomocí JavaScriptu
Pro dnešní den jsem připravil náročnější skript, pomocí kterého lze vytvořit vlastní scrollovací text, který se dá umístnit kamkoliv do vaší stránky. Tento postup je určen pro pokročilejší znalce JavaScriptu, ale podle tohoto návodu by jej měli vytvořit i čtenáři bez větších zkušeností. Skript byl testován v Exploreru 5 a Netscape 4.51.
Jak jsem již předeslal, jedná se o náročnější skript a tak se raději hned pustíme do práce. Zde si prohlédněte ukázku.
Jako obvykle začněme vytvořením vlastních HTML prvků, se kterými budeme pracovat. Budou to převážně tagy <div>.
|
Prvky div mají definované kaskádové styly. Zde je jejich zdroj:
|
Důležitým stylem je clip prvku scrollArea. Ten v případě absolutní pozice určuje viditelný výřez prvku (top, right, bottom, left). Souřadnice 0;0 je v levém horním rohu. V našem případě bude mít tedy scrollArea viditelný celý svůj obsah. Prvek divContent je umístěn v prvku scrollArea a má vzhledem k němu absolutní souřadnice 0;0. Text, který prvek divContent obsahuje, se ale do prvku scrollArea o velikosti 320×270 bodů nevejde – divContent je delší než scrollArea. Scrollování tedy bude zajištěno vertikálním pohybem prvku divContent. Pokračujme k samotnému skriptu.
Pro kontrolu prohlížeče vytvoříme konstruktor verifyCompatibleBrowser(). Vytvořme též konstruktor ConstructObject(), pomocí kterého vytvoříme objekty, se kterými budeme ve skriptu pracovat …
|
Protože naším požadavkem je, aby skript fungoval ve více prohlížečích, vytvoříme objekt bw pomocí konstruktoru verifyCompatibleBrowser(), který bw přiřadí logické vlastnosti podle jedinečných vlastností prohlížečů. Tyto vlastnosti budeme testovat v ConstructObject().
Vlastnosti objektu se definují pomocí klíčového slova this, ale o tom už na Intervalu bylo psáno dříve. Náš konstruktor tedy vytváří objekt s vlastnostmi:
- objekt – název objektu ve stránce, druhý parametr funkce, je zde kvůli Netscape, který v názvu objektu (HTML elementu) zohledňuje umístění v jiném prvku
- css – kaskádový styl objektu (v Netscape 4 nesmí být za jménem objektu vlastnost .style)
- scrollHeight – vertikální rozměr objektu (IE neumi vlastnost .document.height)
- clipHeight – vertikální rozměr viditelné části (IE neumi .clip.height)
- MoveArea – metoda MoveArea, která bude provádět přemístění objektu (viz. níže)
- up a down – metody MoveAreaUp a MoveAreaDown které budou pohybovat objektem (viz. níže)
- y – vlastnost, které budeme přiřazovat vertikální souřadnici objektu (viz. níže) Vlastnosti jsou určené podle verze a typu prohlížeče. Je zde použitá zřetězená podmínka (a)?x :y – v případě, že a je pravda vrací x, v jiném případě y. Nebudu zde popisovat všechny vlastnosti, protože fungují velice podobně, popíšu jen některé, abyste si udělali obrázek, jak vlastně pracují. Např. vlastnost scrollHeight – protože Netscape používá pro určení rozměru vlastnost style.clip.height – tak v případě, že prohlížeč je Netscape (bw.ns4 je true), dostane scrollHeight tuto hodnotu, v jiném případě dostane offsetHeight, kterou podporuje naopak Internet Explorer. Některé vlastnosti jsou přiřazovány pomocí funkce eval(), ta vyhodnotí řetězec (jakýkoli) a vrací hodnotu.
Jako další vytvoříme funkci inicializuj(), kterou budeme volat při otevření stránky (událost onLoad tagu <body>). Ta vytvoří objekty pomocí našeho konstruktoru constructObject().
|
Nyní máme k dispozici objekty objScrollArea (prvek scrollArea, který hned zviditelníme) a objDivContent (prvek divContent, zavoláme jeho metodu MoveArea() viz. níže) s výše uvedenými vlastnostmi. Funkce nastavuje proměnné initialised pravdu (true), protože ji později použijeme jako podmínku. Teď je třeba definovat metody MoveArea(), MoveAreaUp() a MoveAreaDown(), abychom mohli s objektem objDivContent pohybovat – scrollovat.
|
Metoda MoveArea(y) nastavuje vlastnosti y aktuálního objektu hodnotu danou parametrem a jeho vertikální pozici nastavuje dle hodnoty vlastnosti y (=parametr).
Metoda MoveAreaDown(move) dostává v parametru "krok", o který se objekt posune. První podmínkou kontroluje zda spodní hrana objektu objDivContent už není nad spodní hranou objScrollArea (jednoduše jestli už nepřejela). Pokud ne, zavolá metodu MoveArea() aktuálního objektu s parametrem vertikální pozice objektu zmenšené o move (krok objektu). Ta potom (pokud je splněna podmínka loop – tu nastavujeme funkcí scrolluj – viz. níže) zavolá sama sebe za čas určený proměnnou odpocet (50ms).
Metoda MoveAreaUp(move) funguje stejně, pouze s rozdílem, že v první podmínce kontroluje polohu horní hrany objektu (ta nesmí být víc než 0).
Tyto metody budou volány další funkcí, která už bude obsluhovat odkazy scroll up a scroll down ve stránce:
|
Funkce zkontroluje, zdali jsou objekty inicializovány, nastaví proměnnou loop na true a podle svého parametru zavolá metodu objektu objDivContent. Pokud je parametr větší než 0, bude to metoda down(), jinak up().
V této chvíli by při zkoušce skriptu prvek objDivContent sice scrolloval, ale neustále, protože loop je true a funkce pohybu volají sami sebe pořád dokola. Je tedy třeba funkce, která ho zastaví:
|
Tím je skript hotov. Stačí pouze zavolat funkce scrolluj() a zastav() s patřičnými parametry v prvcích <a> ve stránce.
|
Doufám, že se vám příklad líbil a všechny vaše připomínky uvítám v diskusi pod článkem.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024 -
Aktualizujete svoji .NET webovou aplikaci? Může se hodit app_offline.htm
10. července 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
AI v programování: Jak používat GitHub Copilot (část 2)
19. února 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024