2020
Веб-приложение — распределённая система, использующая ресурсы двух приложений: веб-браузер и веб-сервер
Современные браузеры поддерживают следующие документы:
Выделим следующие ключевые задачи, которые необходимо решить при разработке веб-приложения
В рамках курса мы не будем:
HTML — Hyper Text Markup Language, язык разметки гипертекстовых документов
Данный язык является стандартом для представления структурированной текстовой и мультимедийной информации
Для описания элементов используется специальная нотация
<div>Короны есть не только у вирусов</div>
<
и >
<div>
</
, </div>
HTML-документ представляет собою иерархию элементов, рассмотрим пример
<div>
<p>Песня</p>
<ul>
<li>Текст</li>
<li>Музыка</li>
</ul>
</div>
div
, всё остальное является его содержимымdiv
выступают элементы ul
и p
p
содержит только текстul
содержит 2 тега li
, причём порядок их появления в тексте важенli
содержат только текстПри описании HTML-узлов необходимо следить за корректностью вложенности
Корректное вложение:
<p>Мой кот <strong>очень</strong> пушистый.</p>
Некорректное вложение:
<p>Мой кот <strong>очень пушистый.</p></strong>
Закрывающий тег </strong>
идёт после тега </p>
Большинство веб-браузеров смогут обработать некорректный код, но при этом могут делать это по-разному
Все элементы, которые мы помещаем в 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> A link to my example.
Данные атрибуты могут быть установлены для любого элемента документа
class
— имя класса из таблицы стилей для элементаcontenteditable
— определяет можно ли редактировать содержимого данного элементаhidden
— должен ли данный элемент быть скрыт или нетid
— определяет идентификатор элемента на странице, должен быть уникальным для страницыlang
— определяет код содержимого в элементеstyle
— содержит определение CSS-стилей для данного элементаtitle
— определяет дополнительную подсказку об элементе для всплывающей подсказкеНекоторые элементы HTML-документов не имеют текстового содержимого. Для их описания достаточно указать только лишь открывающий тег и необходимые атрибуты
<img src="images/firefox-icon.png"
alt="My test image">
img
— элемент для отображения изображения на страницеsrc
— атрибут содержит ссылку на источник изображения, которое надо отобразитьalt
— атрибут содержит текст, описывающий изображение, который используется если изображение не загрузилось и для обеспечения доступностиПо умолчанию при обработке документов все подряд непечатные символы заменяются на 1 пробела
Следующие выражения являются идентичными:
<p>Собаки очень весёлые</p>
<p>Собаки очень
весёлые</p>
Таким образом мы можем свободно форматировать документ, чтобы его структуру было удобно воспринимать
<!DOCTYPE html> <!-- Версия HTML-спецификации --->
<html>
<head>
<!-- Метаинформация о документе --->
</head>
<body>
<!-- Содержимое документа --->
</body>
</html>
html
является обязательным корневым элементом документаhead
содержит информацию о содержимом: какой язык использован, какая кодировка у документа, откуда подгружать стилевые файлыbody
включает собственно содержимое документа, которое отображается пользователюЗаголовок содержит описание содержимого документа
Кодировка символов в документе:
<meta charset="utf-8">
Заголовок для отображения в браузере:
<title>Котики</title>
Автор документа:
<meta name="author" content="Mikhail Markov">
Краткое описание документа:
<meta name="description" content="Котики в природе">
Иконка для отображения во вкладке браузера:
<link rel="shortcut icon" href="favicon.ico"
type="image/x-icon">
Заголовок приходит в браузер первым, поэтому важно размещать ссылки на другие важные документы в заголовке, чтобы браузер мог их начать скачивать
CSS-документы описывают стили, которые можно применять к различным элементам
<link rel="stylesheet" href="my-css-file.css">
JavaScript-документы содержат динамический код для выполнения на стороне браузера
<script src="my-js-file.js"></script>
Первые надо размещать в заголовке, а JS-код в конце
rel
описывает тип ссылки, обязательно stylesheet
href
содержит ссылку на внешний документТегу html
следует указать язык документа, так как это облегчает работу поисковых систем и систем помощи людям с ограниченными возможностями
Язык указывается в качестве значения тега lang
:
<html lang="ru">
Если у вас в документе несколько языков, то соответствующие блоки можно разметить с помощью элемента span
:
<p>
Пример английского:<span lang="en-US">The cats are cool</span>.
</p>
Содержимое документа находится внутри элемента body
Язык HTML предлагает набор из различных элементов, которые позволяют структурировать информацию на странице
p
h1
, h2
, h3
, h4
, h5
, h6
<h1>Документ о котиках</h1>
<p>Котики очень важны!</p>
<h2>Котики: начало</h2>
<p>Котики пушистые</p>
<h2>Котики: продолжение</h2>
<h3>Котолапки</h3>
<p>У котолапок есть когти</p>
h3
должно следовать за h2
, а не наоборотНенумерованный список
ul
li
<h1>Мои покупки</h1>
<ul>
<li>Молоко</li>
<li>Яйца</li>
<li>Хлеб</li>
<li>Сыр</li>
</ul>
Нумерованный список
ol
li
<h1>Мои котики</h1>
<ol>
<li>Пёстрый</li>
<li>Рыжик</li>
<li>Кусак</li>
<li>Белый</li>
</ol>
Внутри содержимого элемента списка может находится другой список, эффективно делая его вложенным
При написании очень длинного текста, зачастую необходимо выделять различные части текста, чтобы читающий мог понять что в тексте важно, а что нет
Для выделения текста можно использовать строчный элемент em
, сокращение от emphasis:
<p>Я <em>рад</em>, что вы не <em>опоздали</em></p>
Для выделения текста жирным используется строчный элемент strong
:
<p>Данная житкость <strong>очень токсичная</strong></p>
В WYSWYG текстовых редакторах есть возможность указывать атрибуты текста: наклон, жирность, подчёркивание
В старых HTML-стандартах определены элементы i
, b
, u
, которые по названию позволяют форматировать текст
В настоящий момент для оформления текста надо использовать CSS-стили
Если же хотите использовать данные элементы, то следует придерживаться следующих правил:
i
следует использовать для оформления иностранных слов, терминов, цитату и т.д.b
следует использовать для оформления ключевых слов, названий продуктов, вводных предложенийu
зачастую использовать вообще не стоит, даже в печатных изданияхПри описании HTML-документа необходимо ссылаться на другие документы по их единому указателю ресурса, URL
a
Для создания гиперссылки для пользователя используется элемент a
: <a href="https://ya.ru">Поиск</a>
href
содержит в себе ссылку на другой ресурсa
title
предоставляет дополнительную информацию, которая будет показана пользователю при наведении на ссылку
<p>Создаём ссылку
<a href="https://developer.mozilla.org"
title="Информация для веб-разработчиков"
>Mozilla developer network</a>
</p>
a
может включать в себя блоковые элементы, в том числе и изображения<a href="https://www.mozilla.org/ru/">
<img src="mozilla-image.png"
alt="Логотип Mozilla">
</a>
Как и при работе с файловой системой можно формировать либо полные пути, либо относительные пути
https:/
, file:/
, либо с /
Рассмотрим следующую структуру файлов
.
├── 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">
По возможности используйте относительные пути
Текст ссылки должен хорошо описывать ссылку
<a href="https://ya.ru">
Поискать интересного в интернете</a><a href="https://ya.ru">
Нажмите на ссылку</a>, чтобы поискать в интернете
Не добавляйте URL в текст ссылки
Ссылки должны состоять из пары-тройки слов
Используйте уникальный текст для каждой ссылки
Если по нажатию на ссылку пользователю необходимо скачать большой объём данных или требуется специальная технология, то пользователю необходимо сообщить об этом
<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>