Rámy na webu

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

Jak to vypadá

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.)

Tři soubory

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. 

  1. Jeden soubor je obsah levého rámu, 
  2. druhý soubor je obsah pravého rámu. To jsou zatím úplně normální HTML stránky. 
  3. A třetí soubor (nadřazený, hlavní) v sobě obsahuje definici toho, jak se ty rámy do okna sestaví. I to je HTML soubor, ale místo těla s textem stránky (tagu <body>) obsahuje nastavení rámů -- <frameset>.

Příklad

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:

frameset
začíná deklaraci rámů. Vlastně nahrazuje tag <body>. Musí mít právě jeden atribut cols (sloupce), nebo rows (řádky).
cols="215, *"
tento zápis atributu znamená, že rámy budou vedle sebe (budou to sloupce = angl. cols; u řádků by místo "cols" bylo "rows"). První rám bude mít šířku 215 pixelů (obrazovkových bodů), druhý bude široký tak, aby vyplnil zbývající šířku okna (to je ta hvězdička). Je také možné zadávat procenta. Rámy mohou být třeba čtyři (i tři, např. cols="*,600,*" udělá 600 pixelů široký rám a vystředí ho mezi dva další).
frame
Po framesetu následuje popis rámů, každý z nich je zastoupen tagem frame. Tento tag má dva důležité atributy name a src:
name="obsah"
Atribut name u rámu jej pojmenovává. V tomto případě se rám jmenuje "obsah". To se později použije pro cílení odkazů. (Např. <a ... target="obsah"> bude odkaz přepínající stránku do rámu se jménem "obsah".)
src="priklad9.htm"
Atribut src u frame označuje HTML soubor (stránku), který se načte do daného rámu. V tomto případě to bude soubor priklad9.htm (do rámu se může odkazem potom dostat jiná stránka).

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).

Odkazy v rámech

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).

Jména speciálních rámů

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ů:

Základní cíl (base target)

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">

Neexistující rám

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.

Záludnosti

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>.

Jistota navigace

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í.

 

Reklama

www.webhosting-c4.cz, extra rychlý SSD webhosting s doménou v ceně
o tvorbě, údržbě a zlepšování internetových stránek

Návody HTML CSS JavaScript Články Ostatní

Základy Prvky stránek Tvorba webu

Jak psát web píše Yuhů, Dušan Janovský. Kontakt.