XHTML ръководство, уроци и tutorial по HTML
За този документ: Предназначение, Състояние (Какво ново?), Авторски права, Начин на ползване. Помогни!
Благодаря за всички коментари! Имайте в предвид че няма ли коментари - няма и ъпдейти!
За този документ
Предназначение
HTML справочник. XHTML уроци подходящи както за начинаещи, така и за напреднали.
Състояние
Трябва да се добавят/завършат секциите за таблици и карти-изображения. И разбира се, трябва да се поправят всички грешки и неточности. :)
Какво ново?
- 12 ноември 2007
- Промяна в секция "Авторски права": уточнение, че можете да посочите източника ако искате.
- 10 септември 2007
- Промяна в секция "Авторски права": вече не се изисква сочене на v111p.com като източник.
- 11 януари 2005
- Публикуване в WWW!
Авторски права
Авторските права за страницата и това HTML ръководство принадлежат на v111p.com. Материалите могат да се копират свободно при условие че в копието ясно е посочен източника - v111p.com.
Можете да използвате тази информация свободно и не се изисква да цитирате v111p.com като източник. (10 септември 2007 г.) Ако обаче искате да посочите източник (например за да не ви обвинят че представяте чужда работа за своя или просто от благодарност) можете да го направите като използвате точния адрес на страницата или просто ''v111p.com''
Начин на ползване
- Секциите в този документ са основно предназначени за последователно четене.
- Препратки водещи към външни сайтове са означени с знак за по-голямо>.
- Ако искате да си запишете тази страница за offline четене, не забравяйте и css файла! Редактирайте кода на страницата като замените
"/style.css"със"style.css". - За принтиране е зададен стил само с черен цвят на текста и минимални полета! При мен обаче това предизвиква грешка в IE6 при опит за принтиране или Print Preview.
Всяка помощ е добре дошла!
Всички коментари, предложения, връзки към полезна информация, поправки на фактологични, правописни и/или печатни грешки са добре дошли. Ако е възможно приложете и доказателства. За контакти можете да използвате формуляра за коментари намиращ се на дъното на всяка страница или да пишете на адрес v111p (at) v111p.com (за предпочитане, за да мога да отговоря).
XHTML 1.0 Strict пълен справочник
Въведение
XHTML 1.0 Strict е съвместим с по-стари браузъри които разбират само HTML, и в същото време от него са премахнати много елементи и атрибути от които вече няма нужда (вместо някои от тях се използва CSS).
Визуализирането в по-стари браузъри
Все още на много места се използва HTML 4 / XHTML 1 Transitional защото CSS не се поддържа от старите браузъри, а дори и в новите поддръжката може да е непълна (какъвто е и случая с HTML/XHTML между другото). Максимално добрия външен вид дори и в най-старите браузъри може да е важен за един комерсиален сайт. За непрофесионалните сайтове обаче доста важни са удобствата които XHTML и CSS предлагат - максимално добър изглед във всеки един браузър и лесен и бърз начин за промяна на облика на сайта без да е необходимо да се променя самия HTML.
Накратко имате две възможности - в бързо развиващия се свят на технологиите и Интернет да учите и използвате отдавна непрепоръчвани от стандарта елементи и атрибути (непрепоръчвани още от 1997 г - HTML 4), или да правите дизайна с CSS - език който старите браузъри не разбират, но да оформяте информацията с XHTML 1 Strict и според стандартите, така че тя да е максимално съвместима с настояще, минало и бъдеще.
XHTML документа като HTML, XHTML или XML
XHTML 1.0 позволява документа да се изпраща като HTML, XHTML или XML. За да сме съвместими със старите браузъри трябва да изпращаме документите като HTML, което има неясни практически недостатъци (ако знаете за такива - пишете!).
Забележка: Според W3C XHTML документ изпратен от сървъра като XHTML се поддържа от всички модерни браузъри, но не и от MS Internet Explorer (версия не се споменава).В тези HTML уроци ще разглеждаме само случаи при които файла се изпраща като HTML. (Ако файлът има разширение .html той ще бъде изпратен като HTML - това зависи от настройките на сървъра.)
Разлика между application/xhtml+xml и text/html в Mozilla>
Елементи, етикети и коментари
Елементи
Елементи в този документ ще наричаме неща като параграфи, заглавия, списъци, под-точки, препратки, които са обградени с HTML етикети, както и такива обекти които използват само един етикет, като картинки например. Спорно е дали meta декларациите например е правилно да се наричат елементи.
Етикети (tags)
Етикетите се използват за обозначаване на елементите в документ на HTML. Всички етикети започват със знак за по-малко и завършват със знак за по-голямо. Имената на етикетите и атрибутите се изписват изцяло с малки букви. Повечето етикети имат кореспондиращ затварящ етикет. Затварящият етикет се различава по това че започва със знак за по-малко и наклонена на дясно черта.
Пример: <p>Параграф</p>
Не е задължително отварящият и затварящият етикет да са на един ред (макар че е препоръчително в някои случаи заради различните разбирания на браузърите):<p>
Параграф
</p>
Също така не е задължително един етикет да е на един ред. Редовете могат да се прекъсват между името на етикета и атрибутите (ако има такива) и между самите атрибути (ако са повече от един), но прекъсване на реда вътре в стойността на атрибут не се препоръчва защото може да доведе до непредвидени резултати в някои браузъри. На тази страница много етикети са написани на няколко реда за да се съберат на екрана. Това обаче не е необходимо в HTML документа.
В HTML някой етикети нямаха съответен затварящ етикет - например етикета за нов ред <br>. В XHTML всички етикети трябва да се затварят. Имате два варианта: стандартния начин <br></br> или ето така: <br/>. За съвместимост с по-старите браузъри обаче се препоръчва следното - използвайте втория вариант като оставяте интервал между името на етикета и наклонената черта: <br />. Пак по същата причина използвайте този метод само за елементи които по принцип винаги са празни. Пример: не използвайте <p /> или <script />
Много е важно тук да разберете, че етикетите не се използват за да придават някакъв определен външен вид на текста. Всички елементи си имат зададен в браузъра външен вид (размер, шрифт, полета и т. н.), но вие можете да го промените много лесно (чрез CSS).
Едни елементи могат да съдържат други
Едни елементи могат да съдържат други елементи с определени изключения. Елементите обаче не трябва да се застъпват.
Пример 1: (правилно): <strong><em>. . .</em></strong>
Пример 2: (грешно): <strong><em>. . .</strong></em>
Коментари
Можете да поставяте коментари навсякъде в документа извън другите етикети. Коментарите се виждат само когато се вижда изходният код на документа и нямат никакъв ефект върху представянето му. Началото на коментар се означава с знак за по-малко последван от удивителен знак и две тирета. Краят на коментара се означава с две тирета и знак за по-голямо. Коментара може да обхваща един или повече реда.
Примери:
<!-- Това е коментар на един ред. -->
<!-- Това е коментар,
който обхваща няколко реда.
<p>Този параграф
няма да бъде показан в браузъра</p>
-->
Текст, бели полета и специални символи
Бели полета
Бели полета (white spaces) в XML/XHTML са нормалния ASCII интервал, табулаторa, line feed (специален символ за нов ред) и carriage return (също специален символ за нов ред). В XHTML, както и в HTML, всяко бяло поле в текста (независимо от колко символа е съставено) се показва по подразбиране като един интервал. Например ако напишем една дума на един ред и друга на втори ред, двете думи в браузъра ще бъдат показани една до друга, с един интервал между тях.
Изписване на важни за HTML символи
Ако искаме да използваме знаците за по-голямо (>) и по-малко (<) или амперсанда (&) в HTML документ (вкл. в стойностите на атрибутите), трябва да използваме техните кодове - съответно > (от greater than - по-голямо), < (от less than - по-малко) и & (ampersand - амперсанд). В допълнение, ако искаме да използваме кавички (") в стойност на атрибут, трябва да използваме кода за кавички - "
Други символи
Някои символи от Unicode имат зададени имена в HTML - като gt или amp например. Но в HTML могат да се използват всички символи от Unicode чрез техните номера. Например символът за евро - €, може да се зададе както с неговото име (€), така и с неговия десетичен номер 8364 - €, или чрез шестнадесетичния му номер 20AC - € (Пред шестнадесетичните числа се поставя "x").
Забележка: Ако използвате Unicode можете направо да включвате самия символ в документа, вместо неговото кодово име. Това обаче прави документа по-труден за редактиране.
В Unicode има различни видове контролни символи като например за указване промяна посоката на текста. Препоръчва се вместо тези контролни символи да се използва средствата достъпни чрез HTML - например за промяна посоката на текста - елемента bdo. Няма гаранция как ще работят контролните символи в различните браузъри, освен това ако те не се виждат в редактора се усложнява и редактирането.
Забележка: Използването на грешен символ в дадена дума може да предизвика редица проблеми, например невъзможност думата да бъде преведена с електронен речник. За да разберете как да избегнете този проблем, вижте секцията използвайте правилния символ.
- интервала не позволяващ прекъсване на реда
   - “Леви и десни кавички”
“и”- «Двойни ъглови кавички»
«и»- Меко тире1
­- Търговска марка ™
™ ™- Регистрирана марка ®
®- Знак за авторско право ©
©- Евро €
€ € €- Тежко ударение (за български език)2: а̀ ѐ ѝ о̀ у̀ ъ̀ ю̀ я̀ А̀ Ѐ Ѝ О̀ У̀ Ъ̀ Ю̀ Я̀
ѝѝ- Остро ударение (за някои други езици)2: á Á
áá
1Мекото тире указва на браузъра място в дума където тя може да бъде пренесена. Тирето не се показва на екрана ако не се наложи думата да бъде пренесена.
2За ударения по принцип трябва да се използва самата буква и веднага след нея - кода за ударението. По последни данни от БАН в българския език трябва да се използва само тежкото ударение. За съжаление резултатът при визуализирането не е особено добър засега - ударението може да се показва като отделен символ до буквата. Засега не ви препоръчвам да ползвате тази техника.
Секцията от XHTML DTD за наименованите символи: XHTML Entity Sets>.
Атрибути на елементите
Елементите могат да имат един или повече атрибути. Атрибутите се пишат вътре в отварящия етикет във формат атрибут="стойност" като се отделят с интервал от името на етикета и помежду си (ако са повече от един). Обърнете внимание, че стойността трябва да е в кавички.
Пример: <p id="p1" lang="bg">Параграф</p>
Някои елементи имат атрибути само с по една възможна стойност, която съответства на името на атрибута. HTML 4 позволяваше тези атрибути да се използват без стойност, т. е. без частта ="стойност". В XML всички атрибути трябва да имат стойност и затова се налага този подход. За съжаление някои стари браузъри няма да могат да разпознат тези атрибути.
Има няколко групи атрибути които са едни и същи за много елементи.
Основни атрибути (coreattrs)
id- Уникално за документа име. Може да се зададе за да може обекта да бъде манипулиран чрез скрипт или за да може да бъде цел на препратка.
class- Име на предварително зададен стилов клас - вижте страницата за CSS.
style1- Стил - вижте секция "Стилове".
title- Заглавие. Това заглавие обикновено се показва когато потребителят посочи обекта с този атрибут с показалеца на мишката.
1 - Документи които използват атрибута style трябва да задават и стилов език по подразбиране - вижте секцията "стилов език по подразбиране".
Атрибути за интернационализация (i18n)
Атрибутът за езика в HTML е lang, в XML е xml:lang. XHTML 1.0 трябва да използва и двата. Стойността трябва да бъде двубуквения код на езика на текста в елемента (ако езика няма двубуквен код, използва се трибуквения). Съкращенията за езиците> се определят от стандарта ISO639-(1 и 2).
Има още един атрибут свързан с езика който определя посоката в която трябва да тече текста - dir. Този атрибут може да има само две стойности: ltr (отляво надясно - по подразбиране) и rtl (отдясно наляво). Този атрибут за сега като че ли не се поддържа извън етикета bdo (вижте секцията елементи на текстово ниво).
Атрибутите за език не служи за нищо на пръв поглед. Те обаче може да бъде полезен - например за търсачките, за програми които превеждат страници от един език на друг, за браузъри които четат текста в страниците на глас и т. н.
Атрибутът lang е премахнат в XHTML 1.1 в полза на xml:lang.
i18n е съкращение от "internationalization". Числото 18 означава че има 18 символа между първото i и последното n в думата.
Атрибути за събития в потребителския интерфейс (events)
Стойността на тези атрибути трябва да бъде скрипт, който да бъде изпълнен при настъпване на определеното събитие.
Забележка: Документи които използват тези атрибути трябва задължително да задават и скриптов език по подразбиране. Вижте секцията "скриптов език по подразбиране" за повече информация.
onclick- Бутонът на мишката е бил щракнат (бил е натиснат и отпуснат)
ondblclick- Бутонът на мишката е бил щракнат два пъти
onmousedown- Бутонът на мишката е бил натиснат
onmouseup- Бутонът на мишката е бил отпуснат
onmousemove- Показалецът на мишката е бил (пре)местен върху елемента
onmouseout- Показалецът на мишката е бил преместен извън елемента
onkeypress- Клавиш е бил натиснат и отпуснат
onkeydown- Клавиш е бил натиснат
onkeyup- Клавиш е бил отпуснат
Атрибути за елементи които могат да получават фокуса (focus)
accesskey- буква или символ за лесен достъп. (поддържа се само в някои браузъри)
tabindex- позиция в реда за табулиране. (поддържа се само в някои браузъри)
onfocus1- стойността трябва да е скрипт, който да бъде изпълнен когато обекта бъде фокусиран
onblur1- стойността трябва да е скрипт, който да бъде изпълнен когато обекта загуби фокуса
1 Документи които използват атрибутите onfocus и/или onblur трябва задължително да задават и скриптов език по подразбиране. Вижте секцията "скриптов език по подразбиране" за повече информация.
Декларации и <html>
XML декларации
XML декларацията не е задължителна в XML документите ако те използват кодировките по подразбиране - UTF-8 или UTF-16. В случая с Уеб тази декларация не е задължителна и ако енкодинга се изпраща в HTTP header-а. W3C препоръчват да се използва във всички случаи, но и предупреждават че тя може да доведе до проблеми в някои по-стари браузъри.
XML декларацията винаги се поставя на първия ред на документа:
<?xml version="1.0" encoding="UTF-8"?>
където UTF-8 е кодировката на документа.
Този ред, според W3C, пречи на Internet Explorer (версия?) да разпознае документа като XHTML и поради тази причина се препоръчва този ред да се пропуска, а документите да са с енкодинг UTF-8 или UTF-16. Ако документите се изпращат като text/html обаче, ние можем и да не се съобразяваме с правилата на XML (ако нямаме избор).
XML декларация за стилове
За пълнота тук трябва да се отбележи, че ако документа се предлага като "XHTML" или "XML" (а не като text/html), свързаните с документа стилове също трябва да се декларират със специални XML декларации: <?xml-stylesheet href="Адрес" type="text/css"?>
Където Адрес трябва да бъде адреса на стила, като това може да бъде адреса на външен файл или идентификатора на style елемент (зададен с атрибута id), като пред идентификатора, когато се пише като адрес, се добавя знака за номер (#) , напр.: href="#style1". За всеки използван стил трябва да се добави отделна XML декларация.
DOCTYPE декларацията
DOCTYPE декларацията се поставя в началото на документа. Ето я декларацията за XHTML 1.0 Strict:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Strict и strict трябва да се заменят с Transitional и transitional за XHTML 1.0 Transitional или с Frameset и frameset за XHTML 1.0 Frameset.
<html>
Целият документ, с изключение на XML и DOCTYPE декларациите, трябва да бъде обграден с отварящия и затварящия етикет html.
Елемента html трябва да съдържа главата и тялото на документа, в тази последователност.
Атрибути на елемента:
- [i18n]
- атрибутите за интернационализация
- id
- уникално за документа име
- xmlns
- XML Name Space - може да има само една определена стойност: http://www.w3.org/1999/xhtml. (Защо? - Namespaces in XML>). Това име е необходимо, защото XML позволява различни езици за маркиране да се вграждат в един документ, така че някъде в документа можем да имаме код написан на друг език, с друго име.
Пример: <html xmlns="http://www.w3.org/1999/xhtml"
lang="bg" xml:lang="bg">
Където bg е двубуквения код на езика на текста в страницата.
Главата на документа
- Главата на документа е предвидена за елементи които не се визуализират директно на страницата.
- Главата на документа се обгражда с отварящия и затварящия етикет
head. - Главата на документа може да съдържа само следните елементи: title, script, style, meta, link, object, base.
- Елементът
titleзадължително трябва да присъства. - Позволените атрибути за елемента
headса (i18n),idиprofile, (като последният не е предвиден да се използва от браузърите).
Meta информация
meta етикета се използва за задаване на информация с широко приложение - от кодирането на символите в страницата до ключови думи за търсачките.
Атрибути:
- (i18n)
- Атрибутите за интернационализация
id- Уникално за документа име
http-equiv- Еквивалент на стойност която може да се зададе чрез HTTP.
name- Име
content*- Съдържание/стойност. Този атрибут е задължителен.
scheme- Система използвана за стойността на
content.
Обикновено за елемента meta се задават атрибутите http-equiv или name + (и в двата случая) content. Варианта с http-equiv се използва за да се зададе стойност която има еквивалент в HTTP. Зададените чрез елемента meta стойности обаче имат по-нисък приоритет от зададените стойности чрез HTTP. Това означава, че ако една стойност е зададена чрез HTTP, съответстващ елемент meta ще бъде игнориран от браузъра.
Примери за използване на meta
Някои търсачки може да индексират документа по съдържанието на неговите meta етикети description (описание) и keywords (ключови думи):<meta name="description" content="HTML ръководство" />
<meta name="keywords" content="HTML, XHTML, CSS" />
Стойността на Content-Type трябва да е вида на документа и енкодинга които трябва да бъде използван за да бъдат показани символите:<meta http-equiv="Content-Type"
content="text/html; charset=Windows-1251" />
Заглавие на документа (title)
Заглавие на страницата се задава с етикета title. Заглавието на страница обикновено се показва на заглавната лента на прозорците, когато страницата се отвори в браузъра, записва се в списъка bookmarks, когато се запазва адреса на страницата, и се показва при резултатите в търсещите машини.
- Всеки документ трябва да има точно един
titleелемент. - Елементът
titleне може да съдържа други елементи. - Атрибутите са (i18n) и
id.
Съдържанието на title
Заглавието трябва да дава ясна представа за съдържанието на документа. Първите думи трябва да бъдат най-описателните за самата страница. Не започвайте заглавието с текст, който се среща на няколко различни страници, като име на сайт например, или с текст който няма смисъл извън контекста, например: "Първа част - XHTML етикети". Това има особено значение когато се гледат резултатите от търсене или се запаметяват адресите на страниците в bookmarks.
Дължината на title
Имайте в предвид че заглавието, ако е прекалено дълго, няма да бъде показано цялото в заглавния ред на прозореца, в списъка с bookmarks или в резултатите от търсене, затова можете да разчитате най-много на първата част на заглавието да предаде описанието на страницата. Препоръчва се заглавието да е дълго не повече от 40-60 символа.
Базов адрес
Базов адрес на документа може да се зададе с етикета base. (От базовия адрес зависят релативните адреси - вижте Адресите в WWW).
Атрибутите са href* (този атрибут е задължителен) и id.
Пример: <base href="../" />
В този случай всички релативни адреси ще се държат така сякаш документа е в по-горната директория.
<link>
Етикета link се използва за свързване на документа с други документи - например CSS.
Атрибути:
charset- Кодировката на свързания документ. (Може да се наложи да се зададе ако кодировката на документите е различна и не е оказана от самия свързан документ).
href- Адреса на документа който да бъде свързан.
hreflang- Двубуквения код на езика на свързания документ.
type- MIME тип на съдържанието на свързания документ.
rel- Relationship - връзка (отношение) с документа
rev- Показва че адреса в
hrefводи до предишния документ. (Например когато има поредица от свързани документи -relможе да указва следващия, аrev- предишния). Няма практически смисъл. (?) media- Списък от медии (screen, projection, print, ...) разделени със запетайки.
Примери за използването на link
За свързване на алтернативен документ, например - подходящ за принтиране - работи в IE! (версия 6):<link rel="alternate"
media="print" href="printme.html" />
За свързване на икона (в IE работи само от време на време и трябва да е .ico файл, за повече подробности вижте напр. favicon.com>):
<link rel="shortcut icon"
href="fav-icon.ico" type="image/x-icon" />
За свързване на постоянен CSS документ:<link rel="stylesheet"
type="text/css" href="style.css" />
(За повече подробности относно използването на етикета link за стилове - вижте страницата за CSS).
Стилове
(X)HTML дава възможност към документите да се включва специален език за оформлението им. Това може да става по три начина - в отделен документ (който се свързва с елемента link), в главата на документа (в елемента style) или директно за всеки елемент (не се препоръчва) - чрез атрибута style, като в този случай е необходимо за документа да се зададе стилов език по подразбиране.
XHTML не е обвързан с който и да е език за стилове, но на практика съществува само един широко разпространен език и това е CSS.
Елемента style
За добавяне на стилове в главата на документа се използва елемента style. Ето ги и атрибутите му:
- (i18n)
- Атрибутите за интернационализация.
id- Уникално за документа име.
type*- MIME тип на съдържанието. За CSS стойността ще е
text/css. Този атрибут е задължителен. media- Списък от медии (screen, projection, print, ...) за които е предназначен стила, разделени със запетайки.
title- Заглавие. (?)
xml:space- Дали да се запазват белите полета. Стойността е
preserveи не може да бъде променяна.
Пример: <style type="text/css" href="style.css" />
В XHTML ако в стила се използват символите (<) или (&) той трябва или да бъде поставен в отделен файл, или да бъде маркиран като CDATA с <[!CDATA[ и ]]>
Пример:<style type="text/css">
/* <[!CDATA[ */
CSS код тук
/* ]]> */
</style>
Браузъри, които не разпознават елемента style, най-вероятно ще покажат съдържанието му като текст. Единствения начин това да се предотврати е кода за стиловете да се поставя в отделен файл и да се свързва чрез етикета link.
Забележка: В HTML беше разрешено стиловете да се скриват в HTML коментари. На програмите поддържащи XML обаче им е разрешено да премахват коментарите от XML документи без да ги разглеждат. Ето защо кода за стиловете в XML/XHTML документи не бива да се крие в коментари.
Стилов език по подразбиране
Документи които използват атрибута style трябва да задават и стилов език по подразбиране. Това може да се направи по два начина - с meta декларация в главата на документа (което има по-висок приоритет):<meta http-equiv="Content-Style-Type" content="text/css" />
или чрез HTTP (по-нисък приоритет). Ако езикът по подразбиране за стиловете не е зададен по един от тези два начина, езикът по подразбиране ще е text/css, но документа ще бъде неправилен по стандарта на W3C.
Забележка: За етикета style здължителният атрибут type трябва да се зададе дори и когато в документа е зададен стилов език по подразбиране и стила в елемента style е от този вид.
Скриптове
Чрез този етикет към страницата може да се добави скрипт (малка програма). Този елемент може да се намира в главата на документа и най-често се поставя там, но е позволено да бъде и в тялото. Ако се използва за да свърже външен файл обаче, се поставя задължително в главата.
XHTML не е обвързан с който и да е език за скриптове/програмиране. Ограничението е в това какъв език се поддържа от браузърите. Повечето браузъри разбират някаква версия на езика JavaScript.
Атрибути:
id- Уникално за документа име
charset- Кодировката на свързания документ (когато скрипта е в отделен документ). Обикновено не се налага да се задава този атрибут, освен, може би, ако кодировката на HTML документа не е различна.
type*- MIME тип на съдържанието. Този атрибут е задължителен.
src- Адреса на свързания документ (когато скрипта е в отделен документ). Ако зададете този атрибут, всякакво съдържание на етикета би трябвало да бъде игнорирано от браузъра.
defer- Стойността може да бъде само
defer. Подсказва на браузъра че скрипта няма да генерира никакво съдържание за страницата, така че той може да продължи зареждането на страницата преди изпълнението на скрипта да е приключило. (Работи в IE 6, не работи в Mozilla FF 1 и в Opera 7.54). xml:space- Стойността е
preserveи не може да бъде променяна.
Пример за свързване на отделен файл: <script type="text/javascript"
src="script.js"></script>
В XHTML ако скрипта съдържа символите (<) или (&) той трябва или да бъде поставен в отделен файл, или да бъде маркиран като CDATA с <[!CDATA[ и ]]>
Пример:<script type="text/javascript">
// <[!CDATA[
// JavaScript код тук
// ]]>
</script>
Забележка: в XHTML е забранено скриптовете да пишат по документа, както това става с JavaScript функцията document.write(). Съдържанието на документа може да бъде променяно по друг начин.
Браузъри, (много стари браузъри), които не разпознават елемента script, най-вероятно ще покажат съдържанието му като текст. Единствения начин да се предотврати това е скрипта да се поставя в отделен файл и да се свързва чрез атрибута src.
Забележка: В HTML беше разрешено скриптовете да се скриват в HTML коментари. На програмите поддържащи XML обаче им е разрешено да премахват коментарите от XML документи без да ги разглеждат. Ето защо скриптивете в XML/XHTML документи не бива да се крият в коментари.
Скриптов език по подразбиране
Документи които използват атрибути за събития от потребителския интерфейс (events) или атрибутите onfocus и onblur за елементи които могат да получават фокуса (виж атрибутите focus) трябва задължително да задават и скриптов език по подразбиране. Това може да стане по два начина: или чрез HTTP или с meta декларация в главата на документа (което има по-висок приоритет):<meta http-equiv="Content-Script-Type" content="text/javascript" />
(Където text/javascript е MIME типа на скрипта.)
Документи които използват събития, а не задават скриптов език по подразбиране, са неправилни по стандарта на W3C.
Забележка: За етикета script здължителният атрибут type трябва да се зададе дори и когато в документа е зададен скриптов език по подразбиране и скрипта в елемента script е от този вид.
Един "завършен" XHTML документ
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
lang="bg" xml:lang="bg">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8" />
<title>Заглавие</title>
</head>
<body>
Съдържане
</body>
</html>
Това е завършен XHTML документ, но без XML декларацията. В този случай според W3C трябва да се използва енкодинг UTF-8, но ако документа е изпратен не като XML, а като text/html, XML правилата за нас не важат. Също така трябва да се отбележи, че meta декларацията не е задължителна, но все пак трябва по някакъв начин да укажем енкодинга.
Тяло на документа
Тялото на документа се обгражда с отварящия и затварящия етикет body. В тази част на документа се поставя това което ще се показва на екрана. Елемента body може да съдържа пряко само елементи на блоково ниво.
Атрибути:
- (coreattrs)
- Основните атрибути
- (i18n)
- Атрибутите за интернационализация
- (events)
- Атрибутите за събития в потребителския интерфейс
onload- скрипт който да бъде изпълнен когато страницата се зареди в браузъра
onunload- скрипт който да бъде изпълнен когато потребителят напусне страницата
Елементи на блоково ниво
- Заглавия: h1-h6
- Списъци: ul, ol, dl (виж секция Списъци)
- Блоков текст: pre, hr, blockquote, address
- Други: p, div, fieldset, table, noscript
- На блоково или текстово ниво: ins, del, script (Вижте секцията Елементи на текстово ниво)
Етикетите на всички елементи на блоково ниво, с изключение на script, могат да съдържат атрибутите (coreattrs), (i18n) и (events).
<h1>-<h6>- Заглавията са на шест нива, като
h1е най-главното, аh6- най-маловажното. Тези елементи могат да съдържат само елементи на текстово ниво. <p>- Огражда отделните параграфи в текста. Този елемента може да съдържа само елементи на текстово ниво.
<hr />- (хоризонтална линия) може да се използва за разделител между различни части на документа. Този елемент не може да съдържа други елементи.
<blockquote>- блоков цитат. Използва се за цитиране на един или повече параграфи. Обикновено се визуализира като отместен надясно текст. Този елемент може да съдържа пряко само елементи на блоково ниво. Има един допълнителен атрибут -
citeсъс стойност която трябва да е адрес в Интернет (URI) указващ откъде е взет цитата. Този атрибут обаче няма никакво приложение в браузърите. <address>- Информация за автор според W3C. Използва се за информацията която стои на дъното на повечето страници в Уеб - Copyright, информация за контакти, и т. н. Този елемента може да съдържа само елементи на текстово ниво.
<div>- използва се за да обгражда елементи на които искаме да поставим някакъв атрибут или стил (CSS). Може да съдържа елементи на блоково или текстово ниво.
<pre>- (предварително форматиран текст) Оказва на браузъра че даден текст трябва да се покаже с всичките си интервали и без да се смесват редовете. Същото нещо може да се постигне с CSS за който и да е друг блоков елемент. Елементът
preможе да съдържа елементи на текстово ниво с изключение наimg,object,big,small,subиsup <noscript>- Съдържанието на този елемент ще бъде показано в браузъра ако той не поддържа скриптове. По стандарт съдържанието на този елемент трябва да бъде показано ако браузъра не разбира езика на елемента
script, който се намира по-нагоре в документа, но IE6 и MFF 1 не го разбират по този начин. (Работи в Opera 7.54). Може да съдържа пряко само други елементи на блоково ниво.
Списъци
Списъците биват три вида: номерирани, неномерирани и дефиниционни.
При номерираните (<ol>) и неномерираните (<ul>) списъци точките се означават с <li>.
Примерен код:<ol>
<li>HTML</li>
<li>XHTML</li>
<li>XML</li>
</ol>
Където <ol> ще бъде <ul> ако искаме списъка да не е номериран.
При дефиниционните списъци (<dl>) всяка точка е съставена от термин (<dt>) и определение (<dd>).
Пример:<dl>
<dt>world-wide</dt><dd>световна</dd>
<dt>web</dt><dd>паяжина</dd>
</dl>
Елемента dt може да съдържа само елементи на текстово ниво, а dd и li могат пряко да съдържат елементи както на текстово, така и на блоково ниво (включително други списъци).
Етикетите на всички елементи за списъци могат да съдържат атрибутите (coreattrs), (i18n) и (events).
Елементи на текстово ниво
- Специални: br, span, bdo, map, object, img
- Стил на шрифта: tt, i, b, big, small (тези са премахнати от XHTML 2.0 в полза на CSS)
- Фрази: em, strong, dfn, code, q, samp, kbd, var, cite, abbr, acronym, sub, sup
- Елементи на формуляр: input, select, textarea, label, button (вижте секция "Формуляри")
- Разни: ins, del, script (могат да се използват и на блоково и на текстово ниво)
- Котва: a (вижте секция "Препратки")
Етикетите на всички елементи от текстово ниво, с изключение на br, могат да съдържат атрибутите (coreattrs), (i18n) и (events).
Всички елементи от текстово ниво, с изключение на br, object, img и script, могат да съдържат (само) текст и елементи от текстово ниво.
<br />- Принудително прекъсване на реда. Не бива да се използва като алтернатива на започването на нов абзац. (Този елемент е премахнат от XHTML 2.0 в полза на нов елемент за ред).
<span>- Огражда текст върху който искаме да приложим стилове (CSS).
<bdo>- (BiDi Over-ride) използва се за да укаже посоката на текста, например за да се изпише дума на писменост която се изписва в посока обратна на посоката по подразбиране за документа. Атрибута
dir* (който е задължителен) има две възможни стойностиltr(от ляво на дясно) иrtl(от дясно на ляво). (Този елемент е премахнат от XHTML 2, където всички елементи могат да имат атрибутаdirсъс същия резултат). Пример:<bdo dir="rtl">Добре Дошли!</bdo> <map>- Използва се за изображения-карти.
<object>- Използва се за вграждане на обекти в страницата - например Flash, Java аплети, различни видове файлове.
<img>- Използва се за вграждане на картинки в страницата.
<em>- emphasis - ударение, подчертаване, наблягане. Пример: Napster
<em>беше</em>страхотна програма. <strong>- по-силно наблягане.
<dfn>- дума или израз която следва да бъде дефинирана. Пример:
<dfn>HTTP</dfn>означава "протокол за прехвърляне на хипертекст". <code>- програмен код. Елемент на текстово ниво е, но ако е написан на повече от един ред в кода повечето браузъри го показват както биха показали
pre. (Дали работи така във всички браузъри, въпреки че е елемент на текстово ниво?) В XHTML 2.0 вече имаме елемент за код на блоково ниво. <q>- Трябва да поставя текста в кавички, но не се поддържа от IE (версия 6). Този елемент е заменен с нов в XHTML 2, където текста не би трябвало да бъде автоматично обграждан с кавички, това може да се промени и при
qчрез CSS. Пример:<q>Този текст в кавички ли е?
</q> <samp>- примерен резултат от програма (??).
<kbd>- нещо което потребителят би написал.
<var>- променлива, като в програмен код. Пример:
<var>i</var>. <cite>- цитат. Пример:
<cite>Това тук е някакъв цитат</cite>. <abbr>- съкращение. Използва се с атрибута
titleза да се покаже какво означава съкращението. В някои браузъри думата се подчертава с прекъсната линия и когато се посочи с мишката се появява малко прозорче с текст (tool tip). IE (версия 6) не разпознава този етикет. Пример:<abbr title="страница">стр.</abbr>15694. Съвет: Не разчитайте особено на елементитеabbrиacronym, те нямат никакъв ефект в по-старите браузъри. Все още сигурен начин за даване на обяснение е чрез текст в скоби: WWW (World Wide Web). <acronym>- дума, образувана от началните букви на други думи. Вижте
abbrза начин на ползване. В XHTML 2.0 този елемент отпада в полза наabbr. Пример:<acronym title="World Wide Web">WWW</acronym> <sub>- Показва текста малко по-надолу от останалия, като индекс. Пример: H2O
<sup>- Показва текста малко по-нагоре от останалия, като степен. Пример: 22 = 4
<ins>- Обозначава текст или част от документа която е била добавена в последствие. Пример: На сайта ще намерите много полезни неща
<ins>и отскоро - безплатни уроци по XHTML!</ins> <del>- Обозначава текст или част от документа която все едно е била изтрита (вече не е валидна). Пример: На сайта ще намерите много полезни неща и
<del>безплатни</del>уроци по XHTML! (Промоцията свърши!) <script>- Вижте секция "Скриптове".
Препратки
С елемента a можете да поставяте в страниците препратки (още наричани "връзки") към други страници или към части в същата страница.
Елемента a може да съдържа други елементи от текстово ниво, в това число изображения, но не бива да съдържа други елементи a.
Забележка: Текста в елемента a в това ръководство ще наричаме "надпис на препратката". Надписът на препратките изпъква в страниците, обикновено е подчертан, има различен цвят и т. н. За улеснение на навигацията за посетителите, както и за евентуално по-добро представяне пред търсещите машини, се препоръчва надписът на препратките (или ако е картинка - картинката и атрибута ѝ alt) да отговаря на целта на препратката. Също така на една страница не бива да има две препратки с един надпис, но с различни цели и разбира се, препратки с една цел е добре да имат еднакъв надпис. Не използвайте надписи на препратките от вида: "тук", "щракнете тук", "вижте тук", "click here" и т. н. Посочените примери не подсказват по никакъв начин какво има на другия край на препратката. Понякога за да се избегнат такива феномени е необходимо да се промени малко изречението което съдържа връзката, но това не би трябвало да бъде голям проблем.
Атрибути:
- (coreattrs)
- Основните атрибути
- (i18n)
- Атрибутите за интернационализация
- (events)
- Атрибутите за събития в потребителския интерфейс
- (focus)
- Атрибутите за елементи които могат да получават фокуса
charset1- Подсказва на браузъра каква кодировка на символите да използва за да покаже документа към който сочи връзката. Това обикновено няма да е необходимо (виж забележката под този списък).
type1- MIME тип - например за HTML е
text/html. Подсказва на браузъра какъв е вида файла към който сочи връзката. Това обикновено няма да е необходимо, защото сървъра ще му каже какъв е вида на файла (виж забележката под този списък). name- Уникално за документа име. Това име би трябвало да съвпада със стойността на атрибута
id(вижте секцията Основни атрибути). (Атрибутътnameна елементаaотпада от XHTML 1.1 в полза на атрибутаid). href- Адреса до който да води препратката
hreflang1- Езика на страницата или елемента към който води препратката (виж забележката под този списък).
rel- Relationship - Вид на връзката между този и свързания документ. (Не служи за нищо тук?)
rev- Вид на връзката между този и свързания (предишен в поредицата) документ. (Не служи за нищо тук?)
shaperect,circle,polyилиdefault. Стойността по подразбиране еrect. Използва се за изображения-карти.coords- разделен със запетайки списък от дължини (в пиксели или проценти, пр.: "50%,9,70%,4"). Използва се за изображения-карти.
1 Забележка: charset, type и hreflang имат по-нисък приоритет в сравнение със стойностите зададени чрез HTTP или от самия свързан документ. Можете да видите страницата HREFLANG and TYPE considered harmful> за коментари защо не трябва да се използват тези атрибути.
Пример: <a href="http://www.w3.org/"
title="Сайта на W3C">w3.org</a>
Препратки към елементи в HTML документ
Цел на препратка може да бъде всеки елемент с зададено id. (В миналото само a елементи със зададен атрибут name са можели да бъдат цел на препратки).
За да се направи препратка към даден елемент използваме релативния или пълния адреса на документа + знака диез (#) + id-то на елемента-цел на препратката.
Пример: (препратка към елемент с id="links" в същия документ)
<a href="#links">Препратки</a>
Вграждане на изображения
Чрез елемента img могат да се вграждат изображения в HTML документ. В HTML 4 е въведен нов, универсален елемент за включване на обекти в HTML-документа: object. Основният недостатък на стария, но все още широко използван метод - чрез елемента img, е че за алтернативно съдържание може да се използва само прост текст. (Елементът img е премахнат от XHTML 2, където всеки елемент може да бъде картинка).
Формати за изображения които работят в повечето браузъри и на повечето операционни системи са GIF, JPG и PNG, като PNG е сравнително нов формат.
Атрибути:
- (coreattrs)
- Основните атрибути
- (i18n)
- Атрибутите за интернационализация
- (events)
- Атрибутите за събития в потребителския интерфейс
src*- Адрес на изображението. Този атрибут е задължителен
alt*- Алтернативно описание на изображението. Този атрибут е задължителен. За изображения за които няма практически смисъл да се предоставя алтернативен текст, стойността на
altатрибута може да се остави празна. Пример:alt="". longdesc- Адрес на дълго алтернативно описание на изображението. Този атрибут не се поддържа от (повечето? от) браузърите.
height- Височината на изображението в пиксели или проценти (като процент от наличното пространство в прозореца).
width- Широчината на изображението в пиксели или проценти (като процент от наличното пространство в прозореца).
usemap- Адрес на
mapелемент. Използва се за изображения-карти. ismap- Използва се за изображения-карти от страна на сървъра и единствената възможна стойност е
ismap.
Размер на изображенията
Ако размера на изображението е известен, то може да е добра идея той да се зададе чрез атрибутите width и height. Това улеснява браузърите които могат тогава да заделят необходимото пространство на страницата и да покажат всичко останало там където трябва да бъде преди още да са се заредили целите изображения.
Чрез атрибутите за размера можете също така да окажете изображението да се покаже по-голямо от колкото е в действителност. Това разбира се най-вероятно ще развали качеството му.
Забележка: не указвайте по-малък размер на изображението от действителния. Ако искате изображението да се покаже по-малко, променете размера му чрез редактор за изображения, в противен случай хабите напразен трафик.
Изображения-карти
[Тази секция не е завършена все още]
За сега можете да видите секцията Image maps> в ръководството за HTML 4 на сайта на W3C.
Елементът map задава изображение-карта от страна на клиента, която може да бъде свързана с елемент img, object (ако обекта е изображение) или input (също ако е изображение). Изображение-карта се асоциира с елемент чрез атрибута usemap на елемента.
Елемента map може да съдържа елементи на блоково ниво както и area елементи.
Атрибути за етикета map:
- (coreattrs),
id* - Основните атрибути, като атрибута
idе задължителен. - (i18n)
- Атрибутите за интернационализация
- (events)
- Атрибутите за събития в потребителския интерфейс
name- Уникално за документа име. Това име би трябвало да съвпада със стойността на атрибута
id(вижте секцията Основни атрибути). (Атрибутътnameна елементаmapотпада от XHTML 1.1 в полза на атрибутаid).
Елемента area (регион) не може да съдържа други елементи или текст.
Атрибути за елемента area:
- (coreattrs)
- Основните атрибути.
- (i18n)
- Атрибутите за интернационализация
- (events)
- Атрибутите за събития в потребителския интерфейс
- (focus)
- Атрибутите за елементи които могат да получават фокуса
shape- Формата на региона. Стойността може да бъде
rect(правоъгълник),circle(кръг),poly(списък от координати) илиdefault("определя целия регион"?). По подразбиране еrect. coords- Координати на региона. Разделен с запетайки списък от координати или дължини в пиксели или проценти. За форма
rect- ляв x, горен y, десен x, долен y, заcircle- център x, център y и радиус, заpoly- x1, y1, x2, y2, ..., xN, yN, като последните x и y трябва да са същите като първите за да затворят областта. href- Адрес
nohref- Показва че този регион не е активен. Единствената възможна стойност е
nohref. alt*- Алтернативен текст. Този атрибут е задължителен.
Изображения-карти от страна на сървъра
Изображенията-карти от страна на сървъра (server-side image maps) изискват специална програма която работи на сървъра и не се препоръчва заради случаите в които браузъра не може да покаже изображението - например при текстови браузъри или когато визуализирането на изображения е забранено от опциите на браузъра. Когато потребителя щракне в/у изображение с атрибут ismap което се намира в a елемент, към адреса на връзката се прибавят координатите върху които е щракнато с мишката, като горният ляв ъгъл на изображението е с координати 0,0.
Вграждане на обекти
Чрез елемента object в HTML документа могат да се вграждат различни файлове (включително други HTML файлове). Понякога тези файлове изискват допълнителни добавки към браузъра наречени плъгини.
За вграждане на различни видове обекти се използват различни атрибути. В ръководството за HTML 4.01 на W3C може да бъде намерена подробна информация за стандарта за елемента object> (en). За вграждане на определен вид файлове обаче може да се наложи да потърсите повече информация другаде.
Елемента object може да съдържа всякакви други елементи, включително други object елементи, като алтернативно съдържание. Ако обекта не може да бъде показан по някаква причина - например ако изисква плъгин който не е инсталиран или този вид обекти са забранени от опциите на браузъра, браузъра трябва да покаже алтернативното съдържание. За съжаление това не работи в някои браузъри. Например Internet Exploer (6) ще се опита да покаже и двата обекта при всички случаи.
Атрибути:
- (coreattrs)
- Основните атрибути
- (i18n)
- Атрибутите за интернационализация
- (events)
- Атрибутите за събития в потребителския интерфейс
declare- Този атрибут не се поддържа от браузърите (?). Указва на браузъра да не показва обекта преди той да е повикан (може да бъде повикан например с връзка към него). Единствената възможна стойност е
declare. classid- Адрес на имплементация.
codebase- Базов адрес за
classid,data,archive. data- Адрес на данните на обекта.
type- MIME тип за
data. codetype- MIME тип за
classid. Ако липсва, стойността по подразбиране ще е тази на атрибутаtype. archive- Списък от адреси на архивирани/компресирани файлове разделени с интервал.
standby- Съобщение което да бъде показвано от браузъра докато обекта се зарежда.
height- Височината на обекта в пиксели. Може да се зададе също и чрез стилове.
width- Широчината на обекта в пиксели. Може да се зададе също и чрез стилове.
usemap- Адрес на
mapелемент. Използва се за изображения-карти, ако обекта е изображение. name- Име (когато се праща като част от формуляр).
tabindex- Номер в реда за табулация (за обекти които могат да получават фокуса). Този атрибут не е широко поддържан.
Допълнителни параметри могат да се задават към обекта чрез етикета param. param етикетите трябва да бъдат непосредствено след отварящия етикет object. Тези параметри би трябвало да може да се задават и като атрибути в етикета object.
Атрибути на param:
id- Уникално за документа име
name- Име на параметъра. Този атрибут е задължителен.
value- Стойност на параметъра.
valuetype- Тип на стойността на атрибута
value. Има три възможни стойности:data(текст - по подразбиране),ref(адрес) иobject(idна друг обект в страницата). type- Само ако
valuetypeеref: MIME тип на документа, чиито адрес е посочен въвvalue.
Пример: (за вграждане на друг html документ)
<object data="doc.html"
width="400" height="100">
Грешка. Документа не може да бъде вграден.
</object>
Таблици
тази секция предстои да бъде написана
(caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+)) Елементи: caption %Inline; thead (tr)+ tfoot (tr)+ tbody (tr)+ colgroup (col)* col EMPTY tr (th|td)+ th %Flow; td %Flow; Атрибути на table %attrs; summary %Text; width %Length; border %Pixels; frame %TFrame; rules %TRules; cellspacing %Length; cellpadding %Length;
Формуляри
Формулярите са части от документа, които съдържат нормални HTML етикети, специални етикети, наредчени контроли и надписи за тези контроли. След като попълнят формуляр, потребителите обикновено изпращат формуляра към уебсървър за обработка.
Атрибути за form
- (coreattrs)
- Основните атрибути
- (i18n)
- Атрибутите за интернационализация
- (events)
- Атрибутите за събития в потребителския интерфейс
action*- адрес към който информацията от формуляра да бъде изпратена. Ако стойността се остави празна (
""), информацията се изпраща към документа съдържащ формуляра. Този атрибут е задължителен. method- Начин на изпращане - може да бъде
postилиget. По подразбиране еget. Вижте секцията "Изпращане на формуляр". enctype- MIME тип с който информацията се праща на сървъра. По подразбиране е
application/x-www-form-urlencoded, но ако формуляра съдържа input елемент типfileтрябва да се използваmultipart/form-data. onsubmit1- Скрипт, който да бъде изпълнен преди формуляра да бъде изпратен.
onreset1- Скрипт, който да бъде изпълнен преди формуляра да бъде изчистен (например чрез натискане на бутон
reset). accept- Списък от MIME типове, разделени с запетайки, които сървъра може да обработи правилно. Браузърите могат да използват тази информация, като филтрират файловете когато позволяват на потребителя да избере файл за елемент
inputот типfile. accept-charset- Списък от енкодинги, разделени с интервали или запетайки, които сървъра приема. Сървъра може да приеме само един от тези енкодинги за един обект. По подразбиране браузърите могат да използват енкодинга използван за трансфера на документа съдържащ формуляра.
1 Документи които използват атрибутите onsubmit и/или onreset трябва задължително да задават и скриптов език по подразбиране. Вижте секцията "скриптов език по подразбиране" за повече информация.
Контроли
Елементите за контроли са:
textarea- Кутия в която може да се въвежда текст. Първоначалната стойност може да се зададе между отварящия и затварящия етикет
textarea. С атрибутитеrows* иcols*, които са задължителни се задава големината на кутията (броя на редовете и колоните). Другите атрибути са: (coreattrs), (i18n), (events), (focus),name,disabled,readonly,onselectиonchange. Те са със същото значение като съответните атрибути за елементаinput. select- Меню с опции. Този елемент може да съдържа (само) елементите
optgroupиoption. Изборите се представят с елементаoption. Атрибутите за елементаselectса: (coreattrs), (i18n), (events), tabindex, onfocus, onblur,name,size,multiple,disabledиonchange. С атрибутаsizeсе задава колко от опциите да бъдат видими наведнъж (обикновено се използва заедно с атрибутаmultiple). Атрибутаmultiple, с единствена възможна стойност "multiple", позволява на потребителя да избира повече от една опция наведнъж. Не всички потребители обаче може да знаят как да направят това. Например в Windows трябва да се задържи бутона Ctrl докато се правят изборите.optgroup- Този елемент разделя опциите на подгрупи. Може да съдържа само елемента
option. Атрибутите са: (coreattrs), (i18n), (events),disabledиlabel* (заглавие което да бъде показано в менюто) - този атрибут е задължителен. option- С този елемент се задава опция. Заглавието което да се показва в менюто може да се зададе или с атрибута
label(не се поддържа от IE6, FF1 и Opera7 / Win) или между отварящия и затварящия етикет на елемента. Стойността която да бъде изпратена на сървъра ако тази опция бъде избрана се задава чрез атрибутаvalue. С атрибутаselected, с единствена възможна стойност "selected", се указва, че тази опция трябва да бъде предварително избрана от браузъра. Ако в етикета на елементаselectне е зададен атрибутаmultipleсамо една опция от менюто може да бъде предварително избрана. Когато не използватеmultipleза предпочитане е винаги да задавате опция по подразбиране.
button- Бутон, който може да бъде три вида:
button,submitилиreset, които имат същата функция като бутони от същите видове задавани чрез елементаinput. Типа се задава чрез атрибутаtype, по подразбиране еsubmit. Другите възможни атрибути саname,valueиdisabledсъс същите значения като за елементаinput. Преимуществото на елемента button е, че той може да съдържа и други елементи (на текстово или блоково ниво, с изключение наa,formиform-контроли). input-
Чрез този елемент могат да се задават няколко различни видове контроли (Вида се задава чрез атрибута
type):text- Текстово поле позволяващо въвеждането на един ред текст.
password- Същото като текстовото поле, но скрива въвеждания текст. Реалната стойност си остава въведения от потребителя текст, а не това което браузъра показва на екрана.
checkbox- Кутийка със стойност "включено" или "изключено". С атрибута
checkedкутийката може да бъде включена по подразбиране. Атрибутаcheckedможе да има само една възможна стойност - "checked". Няколкоcheckboxконтроли могат да се групират като им се зададе едно и също име (стойност на атрибутаname). radio- "Радиобутон". Могат да бъдат "включени" или "изключени". Когато няколко от тях имат еднакво име (стойността на атрибута
name) те са взаимно изключващи се - когато един бъде включен, другите се изключват. Радиобутон може да бъде включен по подразбиране с атрибутаcheckedсъс стойност "checked", Ако никой радиобутон от една група не е включен по подразбиране, браузърите трябва да избират първия бутон в групата. Не всички браузъри обаче спазват това правило, затова винаги изрично задавайте един бутон от всяка група като "включен". submit- Бутон, чрез който се изпраща формуляра.
reset- Бутон, който връща стойностите по подразбиране на всички контроли във формуляра.
file- Позволява на потребителя да избере файл, който да бъде изпратен на сървъра.
hidden- Скрито поле. Използва се за информация която искаме да бъде изпратена към сървъра, но не искаме потребителя да може да променя.
image- Изображение, алтернатива на бутона
submit. С атрибутаsrcсе задава адрес на файла с изображението, а сalt- алтернативен текст. button- Бутон, който няма никакво зададено действие по подразбиране. Използва се за да стартира скрипт, който може да се зададе например в стойността на атрибута
onclick.
object- На теория разни обекти също могат да бъдат контроли във формуляр, но не е ясно точно коя е тяхната "стойност".
Атрибути за input
- (coreattrs)
- Основните атрибути
- (i18n)
- Атрибутите за интернационализация
- (events)
- Атрибутите за събития в потребителския интерфейс
- (focus)
- Атрибутите за елементи които могат да получават фокуса
type- Вид на контролата (
text,password,checkbox,radio,submit,reset,file,hidden,imageилиbutton). По подразбиране еtext. name(*)- Име, което се изпраща към сървъра заедно със стойността. Този атрибут е задължителен за всички
inputконтроли с изключение наsubmitиreset. value- Първоначална стойност. За
checkboxиradio- постоянна стойност (потребителят не може да я променя). За бутоните това е текста, който се показва на бутона. checked- Само за
checkboxиradioбутони - определя дали опцията е включена по подразбиране. Стойността може да бъде само "checked". disabled- (Забранен). Стойността може да бъде само "
disabled". readonly- (Само за четене). За
textиpassword. Стойността може да бъде само "readonly". size- Дължина на контролата в пиксели. За
textиpassword- дължина в брой символи. maxlength- За текстови полета - максимален брой символи които потребителя да може да въведе.
src- Само за
image. Адреса на изображението. alt- Само за
image. Алтернативен текст. usemap- Само за
image. Адреса на карта. Вижте секцията за изображения-карти. onselect- Скрипт, който да бъде изпълнен когато текст в контролата бъде избран от потребителя.
onchange- Скрипт, който да бъде изпълнен когато стойността на контролата бъде променена от потребителя.
accept- Само за
file- списък от MIME типове, които формуляра приема.
Какво се изпраща към сървъра?
Към сървъра в повечето случаи се изпращат двойките име-стойност (name-value) на контролите. Изключение са контроли които са забранени (disabled), неизбрани checkbox и radio контроли, select контроли в които не е избрана нито една опция, reset бутони и, ако формуляра има повече от един, ненатиснати submit бутони (или натиснат submit бутон без name атрибут). Имената и стойностите на тези контроли не се изпращат към сървъра. За input елемент file, към сървъра се изпраща съдържанието на файловете чиито адреси са въведени.
Надпис на контроли
С изключение на бутоните (където надписа се задава с атрибута value), за контролите може да се зададе надпис с етикета label. Има два начина надписа да се асоциира към дадена контрола. Единия начин е контролата да се напише като съдържание на елемента label, като самия надпис се постави преди или след контролата. Пример:
<label>Име: <input type="text" name="name" /></label>
Другия начин е да се използва атрибута for, чиято стойност трябва да бъде идентична със стойността на атрибута id на контролата. Пример:
<label for="comments">Коментари:</label><br />
<textarea id="comments" name="comments" ></textarea>
Един label елемент може да съдържа всякакви елементи от текстово ниво, но само една контрола и не може да съдържа други label елементи. Атрибутите са (coreattrs), (i18n), (events), for, accesskey, onfocus и onblur. Когато елемента label получи фокуса на клавиатурата, той трябва да го предаде на асоциираната с него контрола.
Групиране на контроли
Елемента fieldset позволява тематично групиране на контролите. Атрибутите са (coreattrs), (i18n) и (events). Заглавието на групата се задава чрез елемента legend. Атрибутите му са същите като за fieldset, плюс accesskey. Само един legend елемент е позволен в fieldset елемент и той не може да бъде предхождан от текст или други елементи.
Изпращане на формуляр
Начина на изпращане на формуляр се задава чрез атрибута method на елемента form. Стойността на този атрибут може да бъде get или post. При "get", информацията от формуляра се изпраща заедно с адреса. Ако във формуляра има дълъг текст (напр. от textarea), парола или файл, използвайте post. Също така ако информацията от формуляра се използва за да се правят промени на сървъра (напр. записване на файл) препоръчително е да се използва post.
Примерен код за формуляр
<form action="">
<fieldset>
<legend>
Лична информация
</legend>
<label>
Име:<br />
<input name="fname" />
</label>
<br />
<label>
Фамилия:<br />
<input name="lname" />
</label>
</fieldset>
<fieldset>
<legend>Предпочитан шрифт</legend>
<label>
<input type="radio" name="font"
value="serif" checked="checked" />
Serif
</label>
<label>
<input type="radio" name="font"
value="sansserif" />
Sans-serif
</label>
</fieldset>
<fieldset>
<legend>Други предпочитания</legend>
<label>Цветове:<br />
<select name="color"
multiple="multiple" size="5">
<optgroup label="Светли">
<option value="white">бял</option>
<option value="yellow">жълт</option>
</optgroup>
<optgroup label="Тъмни">
<option value="blue">син</option>
<option value="black">черен</option>
</optgroup>
</select>
</label>
<br />
<label>Размер на текста:<br />
<select name="textsize">
<option value="14"
selected="selected">14 px</option>
<option value="16">16 px</option>
</select>
</label>
<br />
<label>
<input type="checkbox" name="onesizeforall" />
Използвай този размер за всички елементи
</label>
</fieldset>
<fieldset>
<input type="submit" value="Изпрати" />
<input type="reset" value="Изчисти" />
</fieldset>
</form>
Къде са Frames?
Frames позволяват на една страница да се покажат два или повече HTML документа. Frames не могат да се използват в XHTML 1.0 Strict, ако искате да ги използвате ще трябва да използвате XHTML 1.0 Frameset - за самия документ който обединява останалите, и XHTML 1.0 Transitional - за останалите.
XHTML 1.0 Transitional поддържа атрибута target на препратките, с който може да се определя в коя рамка да се зареди свързания документ. Например ако имате две рамки и искате препратките от документа в едната рамка да се отварят в другата, ще трябва да използвате този атрибут. Също така ако имате препратки към външен сайт, най-вероятно няма да искате да отворите новия сайт в една от вашите рамки (не се препоръчва) и пак ще трябва да използвате атрибута target.
Преди да решите дали да използвате Frames обаче, помислете дали наистина са ви необходими. Frames могат да бъдат полезни например ако имате един голям индекс който не искате да се зарежда с всяка страница по отделно.