В предыдущей лекции мы слегка затронули базовые строительные блоки Web — HTML (или XHTML), CSS и JavaScript. Теперь пришло время немного углубиться и посмотреть на каждый из них в отдельности — что они делают, и как эти три составляющие взаимодействуют друг с другом при создании Web -сайта. Данная лекция имеет следующее содержание:
Это обычно первый вопрос, который задают о стандартах Web. Можно успешно реализовать контент, стилевое оформление и компоновку используя только HTML — элементы шрифта для стиля и таблицы HTML для компоновки, поэтому зачем беспокоиться о каких-то там XHTML/ CSS? Таблицы для компоновки и т.д. использовались в худшие времена дизайна Web, и многие по-прежнему это используют (хотя в действительности не должны бы этого делать), что и явилось прежде всего одной из причин создания данного курса. Мы не будем рассматривать такие методы в этом курсе. Ниже представлены наиболее очевидные причины использования CSS и HTML вместо устаревших методов:
HTML и XHTML являются языками разметки, состоящими из элементов, которые содержат атрибуты (некоторые по выбору и некоторые обязательные). Эти элементы используются для разметки различных типов контента документов, определяя, как каждый элемент контента будет представлен в браузерах Web (например, заголовки, параграфы, таблицы, размеченные списки и т.д.)
Как можно было бы догадаться, элементы определяют тип реального контента, в то время как атрибуты определяют дополнительную информацию об этих элементах, такую как ID для идентификации элемента, или некоторое место, на которое указывает ссылка. Необходимо помнить, что разметка предполагается насколько возможно семантической, т.е. предполагается, что она описывает функцию контента как можно более точно. Рисунок 4.1 показывает структуру типичного элемента (X) HTML.
Анатомия элемента HTML: Символ "меньше", символ "больше" и текст между ними называется начальным тегом, так как он начинает элемент. Текстовая строка состоящая из последовательности символов, за которой следует знак равенства, за которым следует другая последовательность символов, заключенная в символы кавычек, называется атрибутом. Элементы HTML могут иметь более одного атрибута, или ни одного в некоторых случаях. Второй символ меньше, косая черта, второй символ больше и текст между ними называется конечным тегом, так как он заканчивает элемент. Оба тега совместно плюс текст между ними являются элементом.
Помня об этом, посмотрим в чем заключается различие между HTML и XHTML.
Буква "X" в XHTML означает "расширяемый" (простите, если заголовок раздела показался слишком многообещающим). Один из наиболее общих вопросов новичков звучит как "должен ли я использовать HTML или XHTML, и в чем собственно различие между ними?". По большей части они делают одно и то же, основное различие состоит в структуре. Основные различия показаны в Таблице 4.1.
HTML | XHTML |
---|---|
Элементы и атрибуты не различают регистр символов, <h1> эквивалентно <H1>. | Элементы и атрибуты различают регистр символов; они используют символы нижнего регистра. |
Некоторым элементам не требуется закрывающий тег (например, параграфы, <p> ), в то время как другие (называемые "пустыми элементами") запрещают закрывающий тег (например, изображения, <img> ). | Все элементы должны быть явно закрыты (например, <p>Параграф</p> ). Элементы без контента могут быть закрыты с помощью косой черты в начальном теге (например, <hr></hr> и <hr/> будут эквивалентны). Если XHTML обрабатывается как text/html, то необходимо использовать сокращенный синтаксис для всех элементов, которые определены как "пустой" (http://www.cs.tut.fi/~jkorpela/html/ empty.html#html), и помещать пробел перед косой чертой. Необходимо использовать длинную форму (с раздельными начальным и конечным тегами) для любого элемента, не определенного как пустой — даже если он не имеет никакого контента. |
Некоторые значения атрибутов могут записываться без кавычек. | Значения атрибутов должны быть заключены в кавычки. |
Для некоторых атрибутов можно использовать сокращения (например, <option selected> ). | Для всех атрибутов должна использоваться полная форма атрибута (например, <option selected="selected"> ) |
Серверы должны доставлять клиенту HTML с типом носителя text/html | XHTML должен использовать тип носителя application/xhtml+xml, но может использовать application/xml, text/xml или text/html. Если используется text/html, то необходимо следовать рекомендациям совместимости HTML, так как браузеры будут интерпретировать его как HTML (и использовать восстановление ошибок с учетом различий между языками). |
Пока мы рекомендуем не беспокоиться слишком много о записи HTML или XHTML. Придерживайтесь советов, данных в этом курсе, и используйте тип документа HTML (больше о типе документа можно будет узнать в лекции 14), и вы не слишком ошибетесь.
Так как HTML и XHTML определены стандартами (и CSS также, с этой целью), консорциум WWW (W3C) создал прекрасный инструмент, названный валидатором (validator) для автоматической проверки создаваемых страниц, и указания на любые проблемы/ошибки, которые может иметь код, такие как отсутствие закрывающих тегов, или отсутствие кавычек вокруг атрибутов. Валидатор HTML доступен в сети по адресу http://validator.w3.org/. Он автоматически определяет, используется ли HTML или XHTML, и какой тип документа используется. Если требуется проверить код CSS, то валидатор для этого доступен по адресу http://jigsaw.w3.org/css-validator/.
Дополнительную информацию о валидации можно найти в лекции 24. Дополнительная информация о типах документов находится в лекции 14.
Каскадные таблицы стилей ( CSS ) обеспечивают точное управление форматированием и компоновкой документа. Можно изменять или добавлять цвета, фон, размер шрифта и стили и даже помещать объекты на странице Web в различных местах. Существует три основных способа использования CSS: переопределение тега, применение стиля к некоторому ID, или применение стиля к классу. Давайте посмотрим на каждый из них:
p { line-height: 2em; color: green; }
<p id="highlight">Контент параграфа </p>
#highlight { line-height: 2em; color: green; }
<p class="highlight">Контент параграфа </p> <p class="highlight">Контент второго параграфа </p>
.highlight { line-height: 2em; color: green; }
Пример ниже позволит лучше понять, как CSS оформляет HTML. Более подробно мы начнем рассматривать CSS в лекции 22.