HTML  Lekcja 2.4   - Ramki i ich zastosowanie.

Ramki to system służący do ułatwienia nawigacji na stronach WWW wprowadzony przez firmę Nestscape. Polega on na możliwości dowolnego podzielenia głównego okna przeglądarki na mniejsze niezależne okna mogące zawierać niezależne dokumenty html. Korzyści wynikające z zastosowania okien wynikają z możliwości zmiany ich zawartości z poziomu dokumentu znajdującego się w dowolnym oknie. Pozwala to zastosowanie systemu menu, które pozostając niewymieniane może sterować wymianą treści w innym oknie bez potrzeby przeładowywania całego ekranu. Przyspiesza to działanie witryny i uwalnia łącze internetowe przed niepotrzebną powtórną wymianą tej samej informacji.

Stosowanie ramek umożliwia także znacznie pełniejsze zastosowanie JavaScript, której możliwości w środowisku ramek są znacznie większe. Wprowadzenie PHP spowodowało pewne odejście od stosowania ramek na stronach WWW. Projektanci stosujący PHP, a nie znający JavaScript mają na ogół kłopoty z pogodzeniem ramek i PHP. Znajomość pisania skryptów w obu językach pozwala jednak na znakomite pogodzenie tych technologii.

Dokument html wprowadzający ramki jest dokumentem nietypowym. Nic dziwnego, z założenia jego zadaniem jest stworzenie formy, a nie treści. Z tych powodów nie powinien zawierać sekcji body. Istnieje możliwość dodania treści, było to kiedyś przeznaczone dla przeglądarek nie obsługiwujących ramek w sekcji pomiędzy znacznikami noframes, która była wówczas ignorowana przez nowe przeglądarki. Znajomość konstruowania ramek jest stosunkowo niska co prawdopodobnie nie wynika z trudności pisania kodu ale z niedostatecznego wyjaśnienia ich zasad. Podobnie jest z interpretacją ramek przez niektóre przeszukiwarki. Jeśli chcemy, a warto je stosować, musimy stosować dodatkowe metody aby nasze strony były przez nie właściwie oceniane. Niestety w dostępnej literaturze i na Internecie można jeszcze znaleźć sporo błędnych teorii zarówno na temat ramek jak i obsługujących je przeglądarek, cóż mity mają to do siebie, że trwają prawie wiecznie.

Para znaczników, wprowadzająca ramki to: <frameset> i </frameset>.
Znacznik frameset posiada atrybut decydujący o sposobie podziału okna na rzędy rows lub kolumny cols. W każdym znaczniku frameset powinien znależc się tylko jeden z tych atrybutów, chyba, że zechcecie stworzyć mało przydatną kratę. Ilość wierszy lub kolumn może być natomiast dowolna.

kolumny opisujemy od prawej do lewej, a wiersze od góry do dołu przydzielając im udział procentowy w stosunku do całego okna lub odpowiedni wymiar w pixel-ach. Następnie opisujemy własności poszczególnych okien potomnych, każde za pomocą osobnego znacznika <frame> w kolejności takiej jak zostały wymienione ich wymiary w znaczniku frameset to znaczy zgodnie z ich wymaganym na ekranie położeniem: - od lewej do prawej i od góry do dołu. Oto przykłady:

<html>
<head>
</head>
<frameset cols="20%, 70%, 10%">
      <frame name="a" src="menu.htm">
      <frame name="b" src="strona1.htm">
      <frame name="c" src="strona2.htm">
</frameset>
</html>



<html>
<head>
</head>
<frameset rows="18%, * ">
      <frame name="d" src="strona4.htm">
      <frame name="e" src="strona5.htm">
</frameset>
</html>

Ramki można zagnieżdżać w dowolny sposób jedna w drugiej tworząc w ten sposób bardziej skomplikowane struktury.
Zagnieżdżenie ramki polega na zastąpieniu wybranego znacznika frame kompletnym nowym systemem podziału. Pokażemy to na przykładzie, w którym ramkę b zastąpimy systemem podziału jak przy ramkach d i e.
Oto zmiany w kodzie:

<frameset cols="20%, 70%, 10%">
   <frame name="a" src="menu.htm">
   <frameset rows="18%, * ">
      <frame name="d" src="strona4.htm">
      <frame name="e" src="strona5.htm">
       </frameset>
    <frame name="c" src="strona2.htm">
</frameset>


Dla uproszczenia pominęliśmy znaczniki <html> i <head>

Zauważmy, że zamiast jednego z wymiarów wpisaliśmy gwiazdkę * co jest poleceniem dla przeglądarki aby sama obliczyła sobie potrzebną wartość.

Skoro juz wiemy jak konstruować dowolny system ramek, omówimy teraz pozostałe atrybuty, jakie można wpisywać do znaczników:
Znacznik <frameset> - oprócz zadeklarowania wierszy lub kolumn może posiadać atrybut usuwający granice pomiędzy ramkami border=0. Stają się one wówczas niewidoczne.

Znacznik <frame> - może posiadać nastepujące atrybuty:
noresize uniemożliwia zmianę rozmiarów okna (nie przyrównujemy go do niczego)
scrolling może być równy: yes, no lub auto co wstawia paski przewijania, usuwa je lub wstawia tylko gdy są potrzebne.


[dalej]