základy rámů
Rámům se anglicky říká frames a v dávných dobách bývaly častou součástí webových stránek. V tomto textu se snažím na příkladu znázornit, jak to funguje, a objasnit základní syntaxi.
Ačkoli rámy v prohlížečích stále fungují, jedná se o technologii starou, s mnoha problémy v použitelnosti a dohledatelnosti. Pokud nemusíte, doporučuji rámy nepoužívat ani se je neučit.
Jak to vypadá - Tři soubory - Příklad - Odkazy v rámech - Záludnosti - Jistota navigace
Okno prohlížeče je rozděleno na několik obdélníkových částí (rámů). V každém rámu je (třebaže to nemusí být vidět) samostatná HTML stránka (soubor). Zpravidla je jeden z rámů menu s odkazy, které se po kliknutí realizují v jiném, hlavním okně. Nejčastěji to vypadá nějak takhle:
Obsah: odkaz jiný odkaz zase odkaz |
Rám s texty
sem ty odkazy z levého rámu vedou Text text: viděli jste mojí stránku o psaní na klávesnici? (skrytá reklama) |
Takových rámů může být v okně mnoho (prakticky neomezeně), nejčastěji se používají dva nebo tři. Mohou být vedle sebe i nad sebou, ale vždy to musejí být obdélníky. (Zobrazte si příklad v prohlížeči.)
Jak to tedy udělat: Proberu předchozí příklad se dvěma svislými rámy vedle sebe. Vyskytují se tu tři soubory.
Do souboru priklad10.htm s definicí rámů jsem napsal tento kód:
<html>
<head>
<title>Příklad s definicí rámů</title>
</head>
<frameset
cols="215,*">
<frame name="obsah"
src="priklad9.htm">
<frame name="text"
src="priklad8.htm">
</frameset>
</html>
Zároveň jsem si vytvořil soubory priklad8.htm a priklad9.htm. Zobrazte si příklad v prohlížeči. Co znamenají jednotlivé tagy:
Nakonec dodejme, že namísto tagu frame může být další (vnořený) frameset, který opět rozdělí rám na několik menších. Tímto končím popis jednoduché výstavby rámů, přestože problematika obsahuje ještě další špeky (zejm. okraje).
Jestliže mám vytvořenou rámovou strukturu, mohu kterýkoliv odkaz nasměrovat do libovolného rámu. Nyní se budou hodit jména rámů (nadeklarovaná atributem name v tagu frame). V tagu A (odkaz) se použije nový atribut target (cíl) rovný jménu cílového rámu.
<a href="priklad8.htm" target="text">
Po kliknutí na takový odkaz se v rámu jménem "text" objeví stránka priklad8.htm.
Pokud bych atribut target nezadal, bude odkaz klikat do téhož rámu. To se v mnoha případech hodí (v největším rámu), ale jindy je to nevhodné (např. u odkazů v rámu menu).
Někdy je potřeba odkazovanou stránku zobrazit v novém okně nebo v celém prohlížeči. Proto existují speciální jména rámů:
<a href="něco.htm" target="_top">
se tedy zobrazí v celém okně
prohlížeče.base
:Mnoho stránek, zejména takové, které fungují jako obsahy v levém rámu, všechny své odkazy posílají do jiného rámu. Aby se u každého odkazu nemusel nastavovat stále stejný cíl (target), může se nastavit základní cílový rám, do kterého se budou přepínat odkazy na stránce, pokud nebude stanoveno jinak. Dělá se to tagem <base>, který se umístí do hlavičky stránky:
<base target="jméno_základního_rámu">
Používá se to zejména u obsahu malých rámů se seznamem odkazů (takové to levé menu). Např. stránka posílající všechny odkazy do rámu pojmenovaného (v tagu frame) "text" obsahuje v hlavičce zápis:
<base target="text">
Pokud má odkaz zamířit do rámu, který neexistuje, otevře se nové okno prohlížeče a stránka se zobrazí v něm. Ale toto okno si podrží jméno onoho neexistujícího rámu, takže případné další odkazy se stejným targetem se budou zobrazovat v tomto okně. Více o nových oknech otevřených odkazem.
Problematika rámů je velmi široká. Zatím jsem nezmínil, jak se definují okraje rámů, jejich proměnlivá velikost, zobrazení lišt a podobné špeky. U nich býval problém ten, že každý prohlížeč (Netscape a Microsoft) vyžadoval jinou deklaraci stejných věcí. Po nástupu Mozilly se to hodně zjednodušilo.
Už dlouho mnoho webových tvůrců (včetně mě) od rámů upouští, protože jsou pomalé, nevyzpytatelné, graficky omezené, špatně se ukládají, ovládají a tisknou. (Vizte podrobný popis problémů.) A dá se bez nich obejít.
Úplně jinou (a málo používanou) oblastí je používání takzvaných inline frames (vložených rámů), které se dávají do stránky tagem <iframe>.
Autoři rámovaných stránek dělají základní chybu, když se domnívají, že každý uživatel začne číst stránky vždycky z té hlavní - rámované. Existují totiž vyhledávací stroje a roboti, které definice rámů ne zcela milují. Uživatel vyhledávače pak obvykle začíná četbu na některé vnořené stránce webu, která rámovaná není. Oblíbené rčení říká, že čtenář přichází na web okénkem od záchoda.
U nerámovaných stránek je zvykem uvádět navigaci (odkazy na příbuzné stránky). Autor rámovaných stránek navigaci opomíjí v domnění, že odkazy na sousední stránky už jsou v levém rámu. Jenomže levý rám se uživateli vyhledávače nezobrazí!
Nejjednodušším řešením je umístit na každou stránku alespoň odkaz na hlavní stránku (do rámu "_top"). Tak se předejde nejhoršímu bloudění.
Jak psát web píše Yuhů, Dušan Janovský. Kontakt.