Первый шаг в веб-разработку

HTML: создайте веб-страницу с нуля

Каждый сайт построен на HTML. Вы пишете код и сразу видите результат прямо здесь, в живом окне браузера. От анатомии тега до создания целой страницы.

Начать
8 модулейЖивой результатСертификат
ЖИВОЕ ДЕМО

Какой тег даёт этот результат?

Верно! Это тот тег.

Добро пожаловать! HTML (HyperText Markup Language) — это язык веб-страниц. Он сообщает браузеру, что находится на странице: заголовок, текст, изображение, кнопка. В этом курсе вы увидите каждое понятие своими глазами и попробуете сами. Начнём.

1
МОДУЛЬ 1

Что такое HTML?

Как работает веб-страница

Вы пишете HTML-код, браузер его читает и отрисовывает на экране в виде страницы. То есть HTML — это ваши инструкции, а браузер — их исполнитель. Ниже слева код, справа результат в браузере. Измените код и посмотрите, как правая часть сразу обновляется.

Главная мысль: HTML-файл — это обычный текст. Браузер читает этот текст и превращает его в красивую страницу.

Что такое тег

HTML состоит из тегов, заключённых в угловые скобки < >. Каждый тег сообщает браузеру, «чем является эта часть». Чаще всего теги парные: «открывающий» тег начинает, «закрывающий» тег завершает, а между ними находится «содержимое» (текст).

<h1>Привет</h1> Открывающий тег Содержимое Закрывающий тег В закрывающем теге перед именем ставится /
Анатомия тега: <h1> создаёт большой заголовок

Но не все теги парные. Некоторые бывают «одиночными»: они не закрываются, потому что внутри нет содержимого. Умение различать эти два вида — одна из важнейших основ HTML:

ПАРНЫЙ ТЕГ<h1> Привет </h1>

Открывающий и закрывающий тег вместе. Между ними есть содержимое. Например: <h1>, <p>, <div>.

ОДИНОЧНЫЙ ТЕГ<br>

Идёт один, закрывающего нет. Внутри пусто. Например: <br>, <hr>, <img>.

Теперь попробуйте сами. В редакторе ниже оберните текст в теги <h1> или <p> и посмотрите на результат:

<h1> создаёт самый большой заголовок, а <p> — обычный абзац (параграф).

Первая практика

Теперь создайте небольшую страницу сами. В редакторе должны быть один заголовок и один абзац. Когда задание выполнено, отметка ниже станет зелёной.

ЗаданиеНа странице уже есть заголовок (<h1>). Ниже добавьте свой абзац (<p>...</p>). В обоих должен быть текст.

Упражнения: закрепление

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

Тест модуля

2
МОДУЛЬ 2

Скелет страницы

Полный скелет страницы

Настоящая HTML-страница начинается не с отдельных тегов, а со стандартного «скелета». Этот скелет говорит браузеру, как читать страницу. Почти каждая страница состоит из следующих частей:

<html> </html> <head> Не видно: имя, настройки <body> Видно: заголовок, текст, изображение Заголовок Текст Рисунок
<html> оборачивает всю страницу; внутри находятся <head> (невидимый) и <body> (видимый)

Задача каждой части:

  • <!DOCTYPE html>: говорит браузеру «это HTML5» (стоит в первой строке).
  • <html lang="uz">: оборачивает всю страницу; lang="uz" указывает, что язык страницы узбекский (важно для поисковых систем и переводчиков).
  • <meta charset="utf-8">: задаёт кодировку символов. Без него узбекские или другие буквы могут отображаться некорректно. Должен стоять первым внутри <head>. Это одиночный тег (не закрывается).
  • <head>: невидимая информация (настройки, имя страницы).
  • <body>: видимая часть (заголовок, текст, изображение).
  • <title>: имя страницы; отображается во вкладке браузера.

Ниже полный скелет. Измените его и посмотрите на результат:

Главная мысль: этот скелет почти одинаков на каждой HTML-странице. Запомнив его один раз, вы всегда будете начинать с него. На настоящих сайтах есть ещё <meta name="viewport"> (для адаптации под экран телефона); это мы увидим в модуле про медиа.

Разница между head и body

<head> и <body> — это две основные части страницы. То, что внутри <head>, на экране не видно (это лишь информация о странице). А то, что внутри <body>, отображается на экране.

Мой сайт Привет! Кнопка <head> имя вкладки браузера <body> видимая часть
<title> из <head> отображается во вкладке браузера; а <body> виден на странице

Попробуйте: <title> из <head> в результате не виден, виден только текст из <body>:

Текст <title> отображается в заголовке вкладки браузера, а не внутри страницы.

Практика: дайте странице имя

Ниже есть полный скелет, но имя страницы пустое. Внутри тега <title> напишите имя своей страницы.

ЗаданиеМежду <title> и </title> напишите имя своей страницы (например, ваше имя или название сайта).

Упражнения: закрепление

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

Тест модуля

3
МОДУЛЬ 3

Текст и заголовки

Заголовки: от h1 до h6

Для заголовков есть 6 уровней: <h1> самый большой, <h6> самый маленький. Они разбивают текст на разделы. На странице обычно один <h1> (главный заголовок), а остальные используются для подразделов.

Заголовок <h1> большой Заголовок <h2> Заголовок <h3> Заголовок <h4> Заголовок <h5> Заголовок <h6> маленький
Сверху вниз: <h1> самый большой, <h6> самый маленький

В редакторе измените номер заголовка (от 1 до 6) и посмотрите, как меняется размер:

Совет: выбирайте заголовок не по размеру, а по значимости. Если нужно показать крупнее, позже используете CSS.

Абзацы: p, br и пробел

Обычный текст пишется внутри <p> (paragraph, абзац). Каждый <p> — это отдельный блок, оставляющий пустое место сверху и снизу. Важное правило: лишние пробелы и переносы строк в HTML-коде превращаются в браузере в один пробел. То есть даже если вы поставите в коде 10 пробелов, на экране будет один.

Код (исходник) Привет·····мир Результат (браузер) Привет мир
Браузер сжимает лишние пробелы и переносы строк в один пробел

Чтобы намеренно начать текст с новой строки, используется <br> (одиночный тег), а для разделительной черты между разделами — <hr>. Попробуйте ниже: в первом абзаце лишние пробелы сжимаются, во втором <br> даёт перенос строки:

Запомните: чтобы начать текст с новой строки, нажатия Enter в коде недостаточно (он превращается в пробел). Для переноса одной строки используйте <br>, а для нового абзаца — новый <p>.

Styles: атрибут style

Чтобы изменить внешний вид элемента (цвет, размер, фон), ему задаётся атрибут style. Внутри него CSS-свойства пишутся в виде свойство: значение и разделяются ;. Это называется «внутренним стилем» (inline CSS).

style="color: red; font-size: 20px" имя атрибута пары свойство: значение
Внутри пары свойство: значение разделяются ;

Наиболее часто используемые свойства:

  • color: цвет текста (например red или #e34f26)
  • background-color: цвет фона
  • font-size: размер текста (например 20px)
  • text-align: выравнивание (left, center, right)
  • font-family: тип шрифта (например Georgia)
  • padding: внутренний отступ (например 10px)

Попробуйте вживую ниже: измените значения и посмотрите, как меняется вид:

Внутренний стиль vs отдельный CSS: атрибут style быстрый и простой, но его нужно писать отдельно для каждого элемента. Чтобы много элементов выглядели одинаково, позже используется отдельный CSS (с классами) — об этом упоминается в модуле 7.

Теги форматирования текста

Обычный текст пишется внутри <p> (абзац). Чтобы выделить некоторые слова внутри него, есть множество тегов. Сначала одно важное понятие: по строению теги делятся на два вида.

ПАРНЫЙ ТЕГ<b> текст </b>

Открывающий и закрывающий тег идут вместе, между ними находится содержимое (текст). Большинство тегов таковы.

ОДИНОЧНЫЙ ТЕГ<br>

Идёт один, закрывающей части нет. Внутри содержимого не бывает. Например: <br>, <hr>, <img>.

Ниже основные теги форматирования: код, готовый результат, назначение и вид. В столбце «Результат» наблюдайте реальный вид:

ТегРезультатНазначениеВид
<strong>текстВажный текст (жирный + смысл)парный
<b>текстЖирный (только вид)парный
<em>текстВыделенный текст (курсив + смысл)парный
<i>текстКурсив (только вид)парный
<mark>текстВыделенный (цветной фон)парный
<ins>текстДобавленный текст (подчёркивание)парный
<u>текстПодчёркивание (только вид)парный
<del>текстУдалённый текстпарный
<s>текстУстаревшее (зачёркнутое)парный
<sub>H2OНижний индекспарный
<sup>x2Верхний индекс (степень)парный
<code>a = 5Код (моноширинный шрифт)парный
<q>приветКороткая цитата (добавляет кавычки)парный
<marquee>текстДвигает текст (устаревшее)парный
<br>строка 1
строка 2
Начинает с новой строкиодиночный
<hr>
Разделительная черта между разделамиодиночный
Примечание: <marquee> (движущийся текст) — устаревший тег. Браузеры пока его показывают, но на современных сайтах вместо него используется CSS-анимация.
Вид одинаковый, смысл разный: <b> и <strong> оба показывают жирным, но <strong> несёт смысл «это важно» (поисковая система и программа чтения с экрана это понимают). То же самое <i> и <em>. По возможности выбирайте осмысленный вариант (<strong>, <em>).

Теперь попробуйте сами. Оберните слова разными тегами и наблюдайте результат:

Comments: комментарии

Комментарий (comment) — это заметка, которую вы пишете в коде для себя. Браузер её не читает и не показывает на экране. Комментарий начинается с <!-- и заканчивается на -->; всё между ними остаётся скрытым. Комментарий нужен для двух вещей: (1) пояснить код, (2) временно «отключить» какую-то часть (скрыть, не удаляя).

Код <!-- коммент --> <p>Текст</p> <!-- <p>... --> Результат Текст
Всё, что внутри <!-- ... -->, в браузере не видно

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

Совет: если какой-то тег временно не нужен, не удаляйте его, а заключите между <!-- и -->. Потом, когда понадобится, уберёте знаки комментария и вернёте.

Практика: небольшая статья

На странице есть заголовок и абзац. Теперь сделайте какое-нибудь слово в абзаце жирным с помощью тега <b>.

ЗаданиеНа странице должны быть заголовок (<h1>-<h6>) и абзац (<p>), а также хотя бы одно слово, выделенное жирным с помощью <b>.

Упражнения: закрепление

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

Тест модуля

4
МОДУЛЬ 4

Списки и ссылки

Списки: ul, ol и li

Список состоит из трёх тегов. Внешний тег оборачивает весь список: <ul> (маркированный, неупорядоченный) или <ol> (нумерованный, упорядоченный). А внутри каждый пункт пишется в отдельном теге <li> (list item). То есть текст вы помещаете не напрямую, а всегда между <li>...</li>, а затем все <li> размещаете внутри <ul> или <ol>.

<ul> <li>Яблоко</li> <li>Гранат</li> </ul> Яблоко Гранат <ol> <li>Яблоко</li> <li>Гранат</li> </ol> 1.Яблоко 2.Гранат
Одинаковые пункты <li> (в коде нет ни точек, ни цифр). Различается только внешний тег: <ul> рисует маркер (•), <ol> — номер (1.)

В редакторе добавьте в список ещё один <li> или замените <ul> на <ol> и посмотрите результат:

Вид маркера или номера вы выбираете атрибутом type. Он пишется в открывающем теге, например <ul type="square">. Ниже все значения и готовый результат:

КодРезультатПояснение
<ul type="disc">
  • пункт
Закрашенный круг (по умолчанию)
<ul type="circle">
  • пункт
Пустой круг
<ul type="square">
  • пункт
Закрашенный квадрат
<ol type="1">
  1. пункт
Цифры (по умолчанию)
<ol type="A">
  1. пункт
Заглавные буквы: A, B, C
<ol type="a">
  1. пункт
Строчные буквы: a, b, c
<ol type="I">
  1. пункт
Заглавные римские: I, II, III
<ol type="i">
  1. пункт
Строчные римские: i, ii, iii
Совет: используйте <ul>, когда порядок не важен (список покупок), и <ol>, когда порядок важен (шаги рецепта). У <ol> есть ещё атрибуты start="5" (начать с 5) и reversed (обратный отсчёт).

Ссылки и атрибуты

Ссылка (link) при нажатии ведёт на другую страницу. Она создаётся тегом <a>. Но <a> должен знать, куда вести, и это мы сообщаем через атрибут.

Атрибут — это дополнительная информация внутри тега. Он пишется в виде имя="значение" внутри открывающего тега. Для ссылки этот атрибут называется href (адрес):

<a href="sayt.html">Сайт</a> атрибут: куда ведёт видимый текст
href задаёт, куда вести, а текст внутри тега — что будет видно

В редакторе измените текст или адрес ссылки и нажмите на ссылку в результате:

Если добавить атрибут target="_blank", ссылка откроется в новой вкладке: <a href="..." target="_blank">.

Практика: создайте меню

Создайте небольшое меню: пусть в нём будут один список и одна ссылка.

ЗаданиеНа странице должны быть список (<ul> или <ol>, внутри <li>) и одна ссылка (<a href="...">).

Упражнения: закрепление

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

Тест модуля

5
МОДУЛЬ 5

Изображения и медиа

Вставка изображения: img

Чтобы вставить изображение на страницу, используется тег <img>. Это одиночный тег, то есть он не закрывается. Само изображение в коде не находится, тег лишь указывает, где оно расположено. Для этого есть два важных атрибута: src (адрес изображения) и alt (текст на случай, если изображение не отобразится, или для пользователя с ограниченными возможностями зрения).

<img src="tog.jpg" alt="Горы"> адрес: откуда берётся текст: если картинка не выйдет
src — адрес изображения (имя файла или ссылка), а alt — описывающий его текст

В редакторе измените текст alt или значение width (ширина) и посмотрите результат:

Почему alt важен: если изображение не загрузится, вместо него появится текст alt; программа чтения с экрана озвучит его; поисковая система по нему понимает, что на изображении. Поэтому всегда пишите осмысленный alt.

Размер и другие медиа

Размер изображения задаётся в пикселях атрибутами width (ширина) и height (высота). Часто пишут только один (например width), а второй меняется пропорционально.

width height
width задаёт ширину, height — высоту в пикселях

В редакторе измените значение width и посмотрите, как изображение уменьшается и увеличивается:

Кроме изображений можно вставлять видео и аудио. Они являются парными тегами и с атрибутом controls показывают кнопки воспроизведения:

  • <img>: показывает изображение (src, alt). Одиночный тег.
  • <video controls>: воспроизводит видео (play, пауза, звук). Парный тег.
  • <audio controls>: воспроизводит аудио. Парный тег.

Ниже живой пример: атрибут controls выводит кнопки воспроизведения. Понажимайте плееры видео и аудио и попробуйте:

Совет: управлять размером не через HTML-атрибут, а позже через CSS удобнее для адаптивных (responsive) сайтов. Пока достаточно width.

Вставка видео с YouTube

Чтобы вставить видео с другого сайта (например YouTube) на свою страницу, используется <iframe> («внутренняя рамка»). Откройте видео на YouTube, нажмите «Share» (Поделиться), затем «Embed» (Встроить код), скопируйте предложенный код <iframe> и вставьте на страницу. В src находится адрес видео, а в width/height — его размер:

<iframe width="420" height="236"
  src="https://www.youtube.com/embed/tgbNymZ7vqY"
  title="YouTube video"></iframe>

Код выше вставляет на страницу именно следующее видео (нажмите, чтобы воспроизвести):

Что такое iframe: это «окно», которое вставляет внутрь страницы другую страницу (видео, карту). YouTube, Google Maps и подобные вставляются именно через этот <iframe>. ID видео (часть после embed/) у каждого видео своё.

Практика: задайте alt изображению

У изображения ниже нет alt. Добавьте ему осмысленный текст alt.

ЗаданиеДобавьте тегу <img> непустой атрибут alt="..." (напишите, что показывает изображение).

Упражнения: закрепление

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

Тест модуля

6
МОДУЛЬ 6

Таблицы и формы

Таблица: table, tr, th, td

Чтобы разместить данные по строкам и столбцам, используется таблица: <table> — вся таблица, <tr> — одна строка (table row), <th> — ячейка заголовка (жирная, по центру), <td> — обычная ячейка (table data). Чтобы отобразить границу, тегу <table> задаём атрибут border="1" (это HTML-атрибут), а cellpadding="6" добавляет внутри ячеек пустое место.

<table> <th> <th> <td> <td> tr tr
<table> — таблица, <tr> — строка, <th> — ячейка заголовка, <td> — обычная ячейка

Ниже таблица из двух столбцов. Измените текст ячеек (<td>) или добавьте новую строку (<tr>):

Порядок важен: внутри <table> идёт <tr>, а внутри <tr> — <th> или <td>. Желательно, чтобы число столбцов в каждой строке было одинаковым.

Объединение ячеек: colspan, rowspan

Иногда одна ячейка должна занимать несколько столбцов или строк. colspan="2" объединяет ячейку по горизонтали (шириной в 2 столбца). rowspan="2" объединяет ячейку по вертикали (высотой в 2 строки). Когда ячейка объединена, вместо неё в следующей строке или столбце лишний <td> не пишется.

colspan="2" th (2 столбца) td td rowspan="2" td (2 строки) td td
colspan растягивает ячейку на несколько столбцов, rowspan — на несколько строк

Ниже colspan (верхний заголовок на 2 столбца) и rowspan («Язык» на 2 строки) использованы вместе. Попробуйте изменить числа:

Запомните: colspan = по столбцам (горизонтально), rowspan = по строкам (вертикально). Сколько мест занимает объединённая ячейка, на столько <td> меньше пишется в этих строках.

Форма и типы input

Чтобы получить данные от пользователя, используется форма. Форма находится внутри <form>: <label> — имя поля (метка), <input> — поле ввода, <button> — кнопка. Атрибут type у <input> задаёт тип поля. Ниже приведены основные типы (нажмите на каждый и попробуйте):

typeВидОписание
textОбычный однострочный текст
passwordСкрытый пароль (точки)
emailEmail (проверяет знак @)
numberТолько число (со стрелками)
telНомер телефона
urlАдрес ссылки (URL)
searchПоле поиска
dateВыбор даты (календарь)
timeВыбор времени
datetime-localДата и время вместе
monthМесяц и год
weekГод и неделя
colorВыбор цвета
rangeПолзунок (диапазон)
checkboxФлажок (множественный выбор)
radioПереключатель (выбор одного)
fileЗагрузка файла
submitКнопка отправки формы
resetКнопка очистки полей
buttonОбычная кнопка
hiddenне видноСкрытое поле (для данных)

Два важных атрибута: placeholder показывает внутри поля подсказку, пока оно пустое; а required делает заполнение поля обязательным (если пусто, форма не отправляется). Ниже живая форма:

placeholder и required: placeholder="Ваше имя" — серый текст подсказки; required — атрибут без значения, если он есть, поле нельзя оставить пустым. <input> — одиночный тег, не закрывается.

textarea, radio, checkbox, select

Кроме <input> есть ещё несколько типов полей:

  • <textarea>: многострочный текст (комментарий, сообщение). Парный тег. Атрибут rows задаёт высоту.
  • <input type="radio">: из вариантов выбирается только один. Чтобы они были одной группой, их атрибут name должен быть одинаковым.
  • <input type="checkbox">: можно отметить несколько вариантов сразу.
  • <select> и <option> внутри него: выпадающий список (dropdown).
radio только один checkbox несколько
radio — переключатель (выбор одного), checkbox — флажок (несколько)

Ниже всё вживую. Понажимайте radio, checkbox и выпадающий список:

name для radio: вариантам одного вопроса задайте одинаковый name (например обоим name="jins"). Только тогда они образуют одну группу, и выбирается только один.

Практика: добавьте в форму поле комментария

В форме ниже есть поле имени и кнопка. Добавьте <textarea>, чтобы можно было написать комментарий.

ЗаданиеДобавьте внутрь формы <textarea></textarea> (поле комментария).

Упражнения: закрепление

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

Тест модуля

7
МОДУЛЬ 7

Структура: div, span, class, id

div: группировка элементов

На большой странице элементы нужно разбивать на группы: верхняя часть, основная часть, нижняя часть. Для этого используется тег <div>. Сам <div> не даёт никакого внешнего вида, он просто помещает несколько элементов в один контейнер. Этот контейнер позже оформляется с помощью CSS или для него задаётся положение.

<div> Заголовок (h1) Текст (p)
<div> объединяет несколько элементов в один невидимый контейнер

Ниже внутрь <div> помещены заголовок и текст. Граница (border) показывает контейнер:

Зачем нужен div: это невидимый контейнер. Он держит несколько элементов вместе, после чего их удобно оформлять или перемещать все сразу. Так страница делится на логические части.

span и block/inline элементы

Элементы HTML делятся на два основных вида: block и inline. Block-элемент всегда начинается с новой строки и занимает всю ширину (слева направо): <div>, <p>, <h1>-<h6>, <ul>, <li>, <table>, <form>. А inline-элемент не открывает новую строку; занимает место только по размеру своего содержимого и располагается в тексте рядом с другими: <span>, <a>, <b>, <img>, <input>. Поэтому <div> — это block-контейнер (группирует более крупные части), а <span> — inline-контейнер (выделяет небольшой фрагмент внутри текста).

block div p h1 inline span a b img i
Block-элементы идут с новой строки, столбцом во всю ширину; inline-элементы — рядом внутри строки текста

Ниже видна разница: два <div> (block) начинаются с новой строки и во всю ширину; а <span> (inline) располагается внутри предложения рядом с текстом. Цвет фона показывает ширину контейнеров:

Когда span: чтобы выделить одно слово или фрагмент внутри текста (например показать слово другим цветом; потом ему задаётся class и оформляется через CSS). А для группировки более крупных частей — <div>.

class и id: присвоение метки

Элементам можно давать метку (ярлык). Есть два вида меток: class и id. class — это групповая метка: её можно дать нескольким элементам (например всем карточкам class="karta"). А id — уникальная метка: она даётся только одному элементу на странице (например основному блоку id="asosiy"). Эти метки позже помогают находить нужный элемент для CSS и JavaScript.

class="karta" id="asosiy" div class="karta" div class="karta" div
Зелёный class задаётся нескольким элементам (повторяется); оранжевый id — только одному (уникальный)

В коде ниже внутри <style> оформлены .karta (class) и #asosiy (id). Оба div имеют class karta, но только один имеет id asosiy:

Запомните разницу: class повторяется (много элементов), id не повторяется (один, уникальный элемент). У одного элемента могут быть оба. В CSS . обозначает class, а # — id.

Практика: создайте карточку

Ниже уже готов стиль .mahsulot с зелёной границей. Теперь напишите сами <div> с этим классом и поместите внутрь какой-нибудь текст.

ЗаданиеНапишите <div class="mahsulot">...</div> с текстом внутри (должна появиться зелёная рамка).

Упражнения: закрепление

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

Тест модуля

8
МОДУЛЬ 8

Семантический HTML и итоговый проект

Семантические теги: header, nav, main, footer

До сих пор для группировки мы использовали <div>. Но <div> не сообщает, «что это такое». HTML5 даёт семантические (осмысленные) теги: они группируют так же, как <div>, но при этом ещё указывают назначение части. Основные: <header> — верхняя часть (логотип, заголовок), <nav> — меню (ссылки), <main> — основной контент (один на странице), <footer> — нижняя часть (авторство, контакты).

<header> <nav> <main> <footer>
Страница делится на осмысленные части: header, nav, main, footer

Попробуйте вживую ниже (цвета разделяют части, они располагаются сверху вниз как обычные блоки):

Зачем семантика: поисковая система (Google) и программа чтения с экрана (для незрячих) по ней понимают структуру страницы. Код тоже становится удобнее читать. Внешний вид такой же, как у <div>, но смысл точный.

section, article, aside и структура страницы

Внутри основного контента (<main>) есть ещё осмысленные теги: <section> — тематический раздел (например «Последние новости»), <article> — самостоятельный, отдельно стоящий контент (одна статья или пост блога), <aside> — боковая панель (дополнительные ссылки, реклама). Полная страница обычно строится так: вверху header и nav, в середине main (внутри article и aside), внизу footer.

<header> <nav> <main> <article> <aside> <footer>
Внутри <main> располагаются основной <article> и боковой <aside>

Ниже <article> и <aside> внутри <main> (расположение рядом задано с помощью CSS):

Разница: <section> — тематический раздел, а <article> самостоятелен (даже если перенести его на другой сайт, смысл останется понятным, например новость или отзыв).

Хорошие практики (Best Practices)

Профессиональный HTML следует нескольким простым правилам. Они делают код чистым, правильным и удобным для всех:

  • Пишите теги строчными буквами: <p>, а не <P>.
  • Заключайте значения атрибутов в кавычки: class="box".
  • Каждому <img> задавайте осмысленный alt.
  • Используйте на странице только один <h1>.
  • В начале страницы должны быть <!DOCTYPE html>, <html lang="uz">, <meta charset="utf-8">.
  • Вместо <div> по возможности используйте семантические теги.
  • Пишите код аккуратно, с отступами (indentation) по вложенности.
  • Всегда закрывайте теги и правильно располагайте их (в порядке вложенности).

Два кода дают одинаковый результат, но разница в качестве большая:

ПЛОХО<DIV><IMG src=rasm>

Заглавные буквы, нет alt, нет кавычек, использован div.

ХОРОШО<main><img src="/rasm.jpg" alt="Горы">

Строчные буквы, есть alt, есть кавычки, семантический тег.

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

Итоговый проект: личная страница

Теперь объединим всё, что вы изучили, и построим целую страницу. Заполните следующий скелет: добавьте в меню ссылки, а в основную часть — список.

ЗаданиеНа странице должны быть: <header>+<h1>, <nav>+хотя бы одна ссылка (<a href>), <main>+список (<ul>/<li>) и <footer>.
Поздравляем! Если вы с этим справитесь, значит вы полностью освоили основы HTML. Теперь следующий шаг — изучить CSS, чтобы сделать эту страницу красивой.

Итоговый практический проект

Поздравляем, вы завершили все темы модулей курса! Теперь самый важный шаг — итоговый проект. Нажмите кнопку ниже, откроется полноэкранная студия кода: слева вы пишете код, а справа будут вкладки «Образец» (готовая страница, которую нужно воспроизвести) и «Результат» (ваш живой результат). Когда студия открыта, остальная часть курса не видна, и вы сосредотачиваетесь только на проекте.

Эта кнопка активируется после того, как вы завершите все темы уроков.

Тест модуля

ИТОГОВЫЙ ТЕСТ

Итоговый тест из 50 вопросов

Итоговый тест

50 вопросов по всем 8 модулям. Чтобы получить сертификат, дайте минимум 40/50 правильных ответов.

СертификатКогда вы завершите все 8 модулей, практический проект и итоговый тест, ваш персональный сертификат откроется здесь.