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

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

2020

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

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

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

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

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

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

Язык HTML

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

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

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

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

<div>Короны есть не только у вирусов</div>

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

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

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

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

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

<p>Мой кот <strong>очень</strong> пушистый.</p>

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

<p>Мой кот <strong>очень пушистый.</p></strong>

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

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

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

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

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

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

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

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

<!-- Это просто текстовый комментарий --->
<!-- <p> Тут тоже комментарий </p> --->

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

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

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

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

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

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

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

<table>
  <tr> <!-- Первая строка --->
    <td colspan="2">Ячейка на 2 стоблца</td>
  </tr>
  <tr> <!-- Вторая строка --->
    <td>Первый</td> <td>Второй</td>
  </tr>
</table>

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

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

<a href="http://www.example.com'>
  A link to my example.</a>

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

<a href='http://www.example.com'
  title='Isn't this fun?'>
  A link to my example.</a>

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

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

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

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

<img src="images/firefox-icon.png"
  alt="My test image">

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

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

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

<p>Собаки очень весёлые</p>

<p>Собаки              очень
                 весёлые</p>

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

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

<!DOCTYPE html> <!-- Версия HTML-спецификации --->
<html>
  <head>
    <!-- Метаинформация о документе --->
  </head>
  <body>
    <!-- Содержимое документа --->
  </body>
</html>

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

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

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

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

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

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

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

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

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

<html lang="ru">

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

<p>
  Пример английского:
  <span lang="en-US">The cats are cool</span>.
</p>

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

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

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

<h1>Документ о котиках</h1>
<p>Котики очень важны!</p>
<h2>Котики: начало</h2>
<p>Котики пушистые</p>
<h2>Котики: продолжение</h2>
<h3>Котолапки</h3>
<p>У котолапок есть когти</p>

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

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

Списки

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

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

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

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

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

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

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

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

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

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

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

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

Элемент a

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

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

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

<p>Создаём ссылку
  <a href="https://developer.mozilla.org"
     title="Информация для веб-разработчиков"
  >Mozilla developer network</a>
</p>
<a href="https://www.mozilla.org/ru/">
  <img src="mozilla-image.png"
   alt="Логотип Mozilla">
</a>

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

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

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

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

Относительные ссылки в файле index.html

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

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

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

<p><a href="http://www.example.com/report.pdf">
  Скачать большой отчёт (PDF, 10MB)
</a></p>

<p><a href="http://www.example.com/video-stream/"
      target="_blank">
  Посмотреть видео (поток, отдельная вкладка)
</a></p>

<p><a href="http://www.example.com/car-game">
  Играть в гонки (требует WASM)
</a></p>

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

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

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

<body>
  <header>Заголовок страницы</header>
  <nav>Навигация внутри страницы</nav>
  <main>Основное содержимое
    <article>Статья №1
      <header>Заголовок статьи</header>
      <section>Секция 1 статьи 1
        <header>Заголовок секции</header>
        <p>Содержимое</p>
      </section>
    </article>
    <aside>Боковая панель</aside>
  </main>
  <footer>Содержимое нижнего колонтитула</footer>
</body>