aneb špeky ve formátování rámové struktury
Tento text navazuje na základy rámů.
Úvodní příklad - Zobrazení lišty - Změna šířky - Okraje - Rámečky - Noframes: pro vyhledávače
Základní stránka, ve které je definice rámů, může vypadat (bez hlavičky) třeba takto:
<frameset cols="40%,*"
border="0">
<frame name="obsah" src="stranka1.htm" scrolling="auto"
noresize>
<frame name="text" src="stranka2.htm" scrolling="yes"
marginwidth="14">
<noframes>
<p>Tato stránka používá rámy, ale váš prohlížeč je
nepodporuje.</p>
</noframes>
</frameset>
Všechny použité atributy popisuji níže.
<frame scrolling="auto"> je výchozí hodnota. Rolovací lišta se zobrazí, je-li potřeba. Scrolling="yes" zobrazí lišty každopádně (i vodorovnou), třebaže někdy zbytečně. Mnohem víc se používá scrolling="no", které zakazuje zobrazení lišt. To je někdy potřeba, protože rolovací lišta u levého rámu výrazně ruší design. Ale stránkou v rámu, který má scroling="no", nejde posouvat, takže se to hodí jenom pro kratší stránky (většinou ten levý rán s obsahem). Jednou mě napadlo, že by se obsah takového nerolovatelného okna dal posouvat pomocí odkazů na kotvy. To jde ale jen v některých prohlížečích.
Pokud opravdu nejde o krásu nebo o život, doporučuji scrolling nechat na "auto".
Uživatele IE 5.5 bude zajímat, jak lišty obarvit.
Pokud jedete přes rozhraní rámů, změní se kurzor myši na rozšiřovací, takže se dá měnit velikost rámů. Použijete-li zápis <frame noresize>, pak velikost rámů změnit nepůjde. Atribut noresize nemá hodnotu, zadává se tak, jak píšu.
V dnešním webu je vidět velmi málo rozšiřovatelných rámů, protože autoři stránek jsou hrozně namyšlení a vědí nejlépe, z jak velké plochy se má číst.
Marginwidth a marginheight u tagů <frame> nastavují okraje, aby se obsah rámů nelepil k sobě.
Na rozhraní rámů se mohou vykreslovat rámečky. Dají se ovlivnit pomocí atributů tagu <frameset>. Např. <frameset border="0">. Vše se dědí na vnořené framesety.
Border="číslo" funguje v IE 4 i v NN stejně, nastavuje šířku rámečků v pixelech, border="0" rámečky nezobrazí.
Pokud nezadáte nic, je to jakoby border="1" a rámečky se vykreslí šedě.
Border="text" chápe NN jako border="0", IE jako border="1".
Frameborder="0" mění okraje rámů z šedých plastických na bílé, s jinými hodnotami nedělá nic, pokud vím.
Netscape framespacing ignoruje. Internet Explorer ne. <frameset framespacing="10"> zobrazuje rámeček 10px kolem rámů. Přehlušuje nastavení border="hodnota" (nesčítá se).
Border je sice základní a dostačující, ale v IE dokáží framespacing s frameborderem nastavené oba na nulu přebít border, takže se nezobrazí (ne tak v Netscape, tam rozhoduje border). Samotný nulový framespacing v IE s nenulovým frameborderem (nebo bez frameborderu) srazí libovolný border na 1.
Pro prohlížeče, které neumějí zobrazovat rámy, je připravena sekce <noframes>...</noframes>. Rámující prohlížeče ji vynechávají. Nerámující prohlížeče (těch se užívá velmi málo) v ní najdou obsah, který zobrazují tak, jako by to byla normální stránka. Je dobré dát tam rozcestník odkazů nebo alespoň odkaz na seznam stránek. Je to taková alternativa. Je slušností noframes zadávat.
Příklad:
<noframes>
Stránka <a href="ryby-left.html"> o živorodých rybách</a> a <a href="plamenaci-left.html">o
plameňácích</a>.
</noframes>
Zásadní význam má sekce noframes pro vyhledávací roboty (například pro Google). Pokud rámovanou stránku udávají jako výsledek hledání, zobrazují právě začátek sekce noframes.
Většina editorů zadává do noframes text "Váš prohlížeč nepodporuje rámy" nebo "your browser doesn't support frames". Je to v zásadě chyba. Určitě nechcete, aby se tento text zobrazoval ve vyhledávačích jako popisek vaší stránky.
Jak psát web píše Yuhů, Dušan Janovský. Kontakt.