Введение в язык разметки HTML

Андрей Васильев

2020

Архитектура веб-приложения

Веб-приложение — распределённая система, использующая ресурсы двух приложений: веб-браузер и веб-сервер

  • Сервер ждёт подключения со стороны клиентов и одновременно обслуживает множество клиентов
  • Браузер получает документы с сервера и отображает их пользователю, обрабатывает действия пользователя

Современные браузеры поддерживают следующие документы:

  • HTML-документы с текстовой информацией
  • CSS-документы с описанием стилей
  • Мультимедиа-документы: изображения, видео и аудио
  • JavaScript-документы с исполняемым кодом

Основные задачи разработки веб-приложения

Выделим следующие ключевые задачи, которые необходимо решить при разработке веб-приложения

  • Спроектировать список запросов для обработки веб-сервером
  • Реализовать логику обработки запросов на веб-сервере
  • Сформировать HTML-документы для представления информации пользователям и выполнения запросов к серверу
  • Сформировать CSS-стили для качественного отображения информации в формируемых документах
  • Реализовать логику обработки действий пользователя на стороне браузера с помощью языка JavaScript

В рамках курса мы не будем:

  • Формировать собственные CSS-стили, будем использовать CSS-фреймворк
  • Самостоятельно писать код на языке JavaScript, вся логика должна быть реализована на серверной части.

Язык HTML

HTML — Hyper Text Markup Language, язык разметки гипертекстовых документов

Данный язык является стандартом для представления структурированной текстовой и мультимедийной информации

  • Документы на языке HTML являются текстовыми, их можно формировать в обычном текстовом редакторе
  • Ключевая особенность — возможность ссылаться на другие документы удобным для пользователя образом
  • Язык достаточно простой, что позволяет его читать людям и обрабатывать программно
  • Документ представляет собою иерархическую структуру из узлов, которую можно представить в виде дерева

Описание элементов с помощью тегов

Для описания элементов используется специальная нотация

  • Тегом называется текст, состоящий из имени элемента, находящегося между символами < и >
  • Описание элемента начинается с открывающего тега, <div>
  • Описание элемента завершается с закрывающим тегом, который начинается со строки </, </div>
  • Текст между открывающим и закрывающим тегом, называется содержимым элемента
  • В зависимости от типа элемента способ отображения информации будет различный

Иерархия элементов

HTML-документ представляет собою иерархию элементов, рассмотрим пример

  • Корневым элементом в примере является div, всё остальное является его содержимым
  • Прямыми детьми элемента div выступают элементы ul и p
  • Элемент p содержит только текст
  • Элемент ul содержит 2 тега li, причём порядок их появления в тексте важен
  • Элементы li содержат только текст
  • Обычно используется 2 пробела для указания вложенности элементов, хотя отступы не играют роли в языке

Некорректное вложение элементов

При описании HTML-узлов необходимо следить за корректностью вложенности

Корректное вложение:

Некорректное вложение:

Закрывающий тег </strong> идёт после тега </p>

Большинство веб-браузеров смогут обработать некорректный код, но при этом могут делать это по-разному

Комментарии в HTML-документе

Все элементы, которые мы помещаем в HTML-документ, предназначены для отображения информации пользователю

Для добавления информации для других разработчиков можно использовать комментарии

Комментарии начинаются с последовательности <!--

Комментарии заканчивается последовательностью --->

Пример комментария:

Блоковые и строчные элементы

Блоковые элементы

Формируют видимый блоковый элемент на странице

  • Показываются с новой строки относительно предыдущего блока
  • Следующие блоковые элементы тоже начинаются с новой строки
  • Обычно к ним относятся структурные элементы страницы: параграфы, списки, навигационное меню
  • Могут быть вложены друг в друга

Строчные элементы

Формируют описание для внутренней части блока

  • Описывают часть внутреннего содержимого блока
  • Обычно служат для описания ссылок на другие страницы, а также придания формата текстовому содержимому

Атрибуты элементов

У каждого элемента помимо его содержимого можно указать также и атрибуты, которые поясняют его поведение

  • Атрибуты описываются в открывающем теге
  • Для описания атрибута используется формат имя="значение", атрибуты разделяются пробелами
  • Значение атрибута надо помещать в двойные кавычки
  • Бывают атрибуты без значения, достаточно указать имя

Описание значения атрибутов

По умолчанию следует использовать двойные кавычки для описания значения атрибута

  • Можно вообще без кавычек, но это трудно воспринимать
  • Пробелы являются разделителями атрибутов
  • Потенциально можно использовать одинарные кавычки, но это не принято и может привести к проблеме смешивания кавычек

Следите, чтобы внутри значения не встречались кавычки

Глобальные атрибуты

Данные атрибуты могут быть установлены для любого элемента документа

  • class — имя класса из таблицы стилей для элемента
  • contenteditable — определяет можно ли редактировать содержимого данного элемента
  • hidden — должен ли данный элемент быть скрыт или нет
  • id — определяет идентификатор элемента на странице, должен быть уникальным для страницы
  • lang — определяет код содержимого в элементе
  • style — содержит определение CSS-стилей для данного элемента
  • title — определяет дополнительную подсказку об элементе для всплывающей подсказке

Элементы без текстового содержимого

Некоторые элементы HTML-документов не имеют текстового содержимого. Для их описания достаточно указать только лишь открывающий тег и необходимые атрибуты

  • img — элемент для отображения изображения на странице
  • src — атрибут содержит ссылку на источник изображения, которое надо отобразить
  • alt — атрибут содержит текст, описывающий изображение, который используется если изображение не загрузилось и для обеспечения доступности
  • Закрывающий тег не нужен

Пробелы в HTML-документы

По умолчанию при обработке документов все подряд непечатные символы заменяются на 1 пробела

Следующие выражения являются идентичными:

Таким образом мы можем свободно форматировать документ, чтобы его структуру было удобно воспринимать

  • Вложенные элементы имеют отступы в 2 пробела
  • Если содержимое элемента достаточно большое, то можно оставлять 1 строку под открывающий тег

Структура HTML-документа

  • html является обязательным корневым элементом документа
  • head содержит информацию о содержимом: какой язык использован, какая кодировка у документа, откуда подгружать стилевые файлы
  • body включает собственно содержимое документа, которое отображается пользователю

Содержимое заголовка

Заголовок содержит описание содержимого документа

Содержимое заголовка. Продолжение

Подключение внешних ресурсов

Заголовок приходит в браузер первым, поэтому важно размещать ссылки на другие важные документы в заголовке, чтобы браузер мог их начать скачивать

Первые надо размещать в заголовке, а JS-код в конце

  • rel описывает тип ссылки, обязательно stylesheet
  • href содержит ссылку на внешний документ

Указание языка документа

Тегу html следует указать язык документа, так как это облегчает работу поисковых систем и систем помощи людям с ограниченными возможностями

Язык указывается в качестве значения тега lang:

Если у вас в документе несколько языков, то соответствующие блоки можно разметить с помощью элемента span:

Формирование содержимого документа

Содержимое документа находится внутри элемента body

Язык HTML предлагает набор из различных элементов, которые позволяют структурировать информацию на странице

  • Базовым элементом документа является параграф, p
  • Есть шесть уровней заголовков: h1, h2, h3, h4, h5, h6
  • Каждый из этих элементов блоковый

Предложения по структурированию

  • Желательно использовать 1 заголовок первого уровня
  • Далее информацию следует группировать в подзаголовках
  • h3 должно следовать за h2, а не наоборот
  • Следует использовать не более четырёх видов заголовков на одной странице, а лучше всего три

Кому нужны заголовки

  • Пользователям удобнее ориентироваться в структурированной информации, а не в длинных текстах
  • Поисковым движкам легче извлекать важные данные
  • Обеспечения доступа для людей с ограниченными возможностями
  • Заголовки можно красиво стилизовать

Списки

Ненумерованный список

  • Список описывается элементом ul
  • Отдельный элемент списка описывается элементом li

Нумерованный список

  • Список описывается элементом ol
  • Отдельный элемент списка описывается элементом li

Внутри содержимого элемента списка может находится другой список, эффективно делая его вложенным

Выделение текста

При написании очень длинного текста, зачастую необходимо выделять различные части текста, чтобы читающий мог понять что в тексте важно, а что нет

Форматирование текста

В WYSWYG текстовых редакторах есть возможность указывать атрибуты текста: наклон, жирность, подчёркивание

В старых HTML-стандартах определены элементы i, b, u, которые по названию позволяют форматировать текст

В настоящий момент для оформления текста надо использовать CSS-стили

Если же хотите использовать данные элементы, то следует придерживаться следующих правил:

  • i следует использовать для оформления иностранных слов, терминов, цитату и т.д.
  • b следует использовать для оформления ключевых слов, названий продуктов, вводных предложений
  • u зачастую использовать вообще не стоит, даже в печатных изданиях

Ссылки на другие ресурсы

При описании HTML-документа необходимо ссылаться на другие документы по их единому указателю ресурса, URL

  • При формировании ссылок для пользователя
  • Для указания местоположения CSS таблиц
  • Для подключения исполняемых JS-файлов
  • Для указания пути к мультимедиа объектам

Элемент a

Для создания гиперссылки для пользователя используется элемент a: <a href="https://ya.ru">Поиск</a>

  • href содержит в себе ссылку на другой ресурс
  • Текстовое содержимое показывается пользователю

Дополнительные возможности a

title предоставляет дополнительную информацию, которая будет показана пользователю при наведении на ссылку

  • По возможности размещайте данную информацию в тексте, чтобы она была доступна на всех устройствах
  • Элемент a может включать в себя блоковые элементы, в том числе и изображения

Формирование путей к документам

Как и при работе с файловой системой можно формировать либо полные пути, либо относительные пути

  • Полный путь начинается либо с указания схемы доступа, https:/, file:/, либо с /
  • Относительный путь высчитывается с «каталога», в котором находится текущий ресурс

Рассмотрим следующую структуру файлов

.
├── css
│   └── style.css
├── data.html
├── img
│   ├── cat.png
│   └── dog.gif
└── index.html

Практики по формированию путей

Пути к специальным документам

Если по нажатию на ссылку пользователю необходимо скачать большой объём данных или требуется специальная технология, то пользователю необходимо сообщить об этом

Семантическая разметка документа

Ранее рассмотренные элементы структуры могут оказаться в различных частях страницы и нести разную смысловую нагрузку

  • Заглавие, обычно изображение или общие данные для всех страниц, принадлежащих одному сайту
  • Навигационная панель, также общий элемент между страницами, позволяющий передвигаться между ними
  • Содержимое страницы, обычно центральная часть страницы, предоставляющая ключевую информацию
  • Боковая панель, содержит дополнительную информацию, рекламу и т.д.
  • Нижний колонтитул, обычно общий для всех страниц, содержит информацию о лицензии, дополнительные ссылки

Элементы семантической разметки