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

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

2020

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

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

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

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

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

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

Язык HTML

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

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

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

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

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

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

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

<div>
  <p>Песня</p>
  <ul>
    <li>Текст</li>
    <li>Музыка</li>
  </ul>
</div>

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

При описании 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>

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

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

Списки

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

<h1>Мои покупки</h1>
<ul>
  <li>Молоко</li>
  <li>Яйца</li>
  <li>Хлеб</li>
  <li>Сыр</li>
</ul>

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

<h1>Мои котики</h1>
<ol>
  <li>Пёстрый</li>
  <li>Рыжик</li>
  <li>Кусак</li>
  <li>Белый</li>
</ol>

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

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

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

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

В 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

<!--- Ссылка на data.html --->
<a href="data.html">...
<!--- Отображаем картинки --->
<img src="img/cat.png">
<!--- Подключаем стили --->
<link rel="stylesheet"
    href="css/style.css">

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

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

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

<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>