Рамкова сага
За какво се използват рамките? Как да работите с тях правилно? Кога е по-добре да ги избягваме и какви капани могат да ни дебнат по пътя?
Трябва ли да използвам рамки?
Първо, нека решим за какви рамки се използват. Те се появиха във втората версия на Netscape Navigator и имаха за цел да улеснят навигацията при създаване на страници (както изглеждаше тогава).
Техниката на използване на рамки е, че целият прозорец на браузъра е разделен на няколко области, всяка от които може да зареди независима страница. Освен това беше въведен механизъм, който ви позволява да управлявате всяка страница от всеки прозорец. Например, можете да организирате менюто на сайта в един прозорец и да покажете съдържанието му в друг. Освен това, щракването върху връзката в прозореца на менюто отваря страницата в съвсем различен прозорец. Това изграждане на площадка е най-често срещано, но нищо не пречи да направим не две рамки, а например 3, 4, 5 и т.н. Но засега нека не бързаме да обсъждаме механизма на работа на рамките, а нека поговорим за техните недостатъци и целесъобразността на тяхното използване.
Кога е подходящо да се използват рамки?
Честно казано, има много малко проблеми, които не могат да бъдат решени без използването на рамки. Първоначално въведени, за да улеснят създаването на механизъм за навигация на сайта, сега според мен ясно показаха, че не се справят с тази задача. Технологията SSI е много по-подходяща за тази цел.
В какви случаи обаче е оправдано използването им?
- в случай, че задачата е бързо да създадете уебсайт и всички страници вече са написани, но няма нито време, нито желание да ги преправяте
- ако искате част от страницата (най-често лого или меню) винаги да е пред очите ви
- за дизайнерски изкушения, най-накрая.
НоИма един добър начин за използване на рамки - за създаване на помощна система за сложни сайтове. В този случай е много удобно да отворите нов прозорец, където структурата на рамката вече е използвана. Това е много подобно на вградената помощна система на Windows.
Рамков механизъм
Ако все пак е решено да се използват рамки, тогава нека да разберем как да напишем правилно HTML кода и да работим с тях.
Всяка страница, съдържаща рамки, започва с писане на специална контейнерна страница, която не се показва сама, но съдържа инструкции за организиране на структурата на рамката и връзки към участващите файлове. Ето как изглежда:
index.htm - страница контейнер
И веднага напишете кода за страниците, включени в структурата на рамката.
left.htm - страницата, съдържаща менюто
right.htm - страница, където ще се показват основните статии на сайта.
Както можете да видите, страницата на контейнера се различава от обикновената само по това, че вместо тага използваме тага frameset >, в който рамките са директно дефинирани. Но сам по себе си той описва само броя и размера на рамките и не описва страниците, включени в рамката. Това може да стане с помощта на етикета рамка >. Нека разгледаме по-отблизо нашия пример:
В параметъра за маркер > ние определяме, че страницата ще бъде разделена вертикално и ще се състои от две колони (ако трябва да разделим прозореца хоризонтално, тогава вместо параметъра cols, трябва да използваме параметъра rows).
По принцип може да има повече от две колони. Техният брой се определя от стойността на параметъра cols (редове), който представлява числа и знаци, разделени със запетаи. Всяка стойност определя ширината на колоната. Ширината, както и височината, могат да бъдат зададени в проценти, пиксели и спомощ на знака звездичка, обозначаващ - "цялото оставащо пространство". Ето примери за дефиниции на рамки:
- 2 колони, едната от които е с фиксирана ширина 200 пиксела.
- 3 реда, чиято височина се определя като процент от височината на прозореца на браузъра.
- същото като предишния ред, но изписано със звездички. Числото преди звездичката показва броя на повторенията. Ширината на една звездичка се определя като средноаритметично на всички звездички в редицата, като се вземат предвид коефициентите пред тях.
Както казах по-горе, тагът е контейнер и редовете за всяка колона (ред) трябва да бъдат записани като негови елементи с помощта на тага. Ето едно примерно описание:
- src - URL на страницата, която ще бъде рамкирана
- име - името на страницата, от която може да бъде достъпна.
- превъртане, noresize, . - параметри, които контролират поведението на рамката - възможност за промяна на ширината на рамката от потребителя и контрол на външния вид на лентата за превъртане, в случай че съдържанието на страницата не се побира на екрана.
Обърнете внимание на параметъра име - той е много важен и ни позволява да манипулираме рамката. Как се осъществява това? Нека да разгледаме по-подробно файла left.htm, който съдържа нашето меню. В самия файл няма нищо необичайно, но има нещо необичайно в писането на връзки към страници. Ако се вгледате внимателно, ще забележите, че е добавен още един параметър target="content" - това е всичко, той отговаря за прозореца, в който ще се зареди файлът чрез връзката:
Стойността на параметъра е същото име, което присвоихме на нашата рамка. Така можем да отворим всяка връзка от всеки прозорец и във всеки прозорец. Само да знаеш името му е достатъчно.
В допълнение към имената, дефинирани директнонас, има някои вече дефинирани и най-важните от тях са следните:
- _blank - отваря връзката в нов прозорец
- _top - отваря линк към целия прозорец, ако е бил в рамка. С други думи, разрушава структурата на рамката и зарежда файла в целия прозорец.
- _parent - отваря връзката в родителския прозорец.
Досега сме използвали прости тагове като контейнерни елементи, но можем да използваме и контейнер. В този случай получаваме т.нар. вложени рамки. Ето един пример:
В този случай са дефинирани три рамки – една хоризонтална в горната част, която можем да използваме например като лого. И две вертикални, които разделяха втората хоризонтална рамка.
В общия случай можете да използвате колкото искате рамки (в разумни граници, разбира се).
Малка забележка. По принцип не HTML страница, а GIF или JPEG изображение може да се посочи като източник на рамка, но използването на такъв механизъм се счита за лоша форма.
Сега за подводните камъчета. Най-големият е, че Netscape Navigator не зачита точно ширината на рамката в пиксели и може да предприеме само няколко стъпки. Ето защо, в случай че възникне такъв проблем, просто трябва да настроите ширината на рамката според стандартите на Netscape.
Между другото, границата на рамката може да бъде премахната чрез указване на параметъра frameborder=0.