HTML · Урок 3

Ссылки, изображения и таблицы

Научимся соединять страницы между собой и наполнять их мультимедиа.

Ссылки — <a>

Ссылка задаётся тегом <a> с атрибутом href. Ссылаться можно на внешние сайты, локальные файлы и элементы своей страницы.

<a href="https://developer.mozilla.org">MDN Docs</a>
<a href="about.html">О нас</a>
<a href="#contacts">Контактная информация</a>
Вид ссылкиПримерКуда ведёт
Абсолютнаяhref="https://…"На другой сайт
Относительнаяhref="about.html"На файл рядом с текущим
Якорнаяhref="#id"К элементу с этим id
Emailhref="mailto:hi@mail.ru"Открывает почтовый клиент
Телефонhref="tel:+79990000000"Звонок на мобильных
⚠️
Для внешних ссылок добавляйте target="_blank" и rel="noopener" — это безопаснее по открытию в новой вкладке.

Изображения — <img>

Изображение — одиночный тег с src (путь) и alt (текст-заменитель). Ширину и высоту можно управлять через CSS, а здесь уменьшим прямо атрибутами для примера:

<img src="cat.jpg" alt="Рыжий кот на подоконнике" width="300">

Атрибут alt показывается, если картинка не загрузилась. Скринридеры озвучивают его незрячим пользователям — это не формальность, а доступность.

Таблицы

Таблица строится из рядов <tr>, ячеек данных <td> и заголовков <th>. Для объединения ячеек есть атрибуты colspan и rowspan.

<table>
  <thead>
    <tr><th>Технология</th><th>Сложность</th></tr>
  </thead>
  <tbody>
    <tr><td>HTML</td><td>Низкая</td></tr>
    <tr><td>CSS</td><td>Средняя</td></tr>
    <tr><td>JS</td><td>Высокая</td></tr>
  </tbody>
</table>
💡
Таблицы — не для вёрстки макетов. Для расположения блоков используйте Flexbox и Grid (урок 6). Таблицы предназначены для данных.

Видео и аудио

Современные теги позволяют встраивать видео без сторонних плееров:

<video controls width="400">
  <source src="promo.mp4">
</video>
<audio controls>
  <source src="track.mp3">
</audio>

Пути: относительные и абсолютные

Путь к файлу может быть полным (от корня сайта) или относительным (от текущей папки). Разница критична при переносе сайта на хостинг:

<img src="images/cat.jpg">        <!-- в подпапке images/ -->
<img src="../images/cat.jpg">     <!-- на уровень выше -->
<a href="/blog/post.html">      <!-- от корня сайта -->
<img src="https://site.ru/i/cat.jpg"> <!-- внешний -->
ℹ️
../ — подняться на уровень вверх, ./ — остаться в текущей папке (пишут не всегда). Слеш в вебе всегда прямой /, даже в Windows.

Форматы изображений

ФорматПлюсыДля чего
JPEGмаленький вес для фотофотографии, фон
PNGпрозрачность без потерьлоготипы, скриншоты
WebPлучшее сжатие и прозрачностьсовременные сайты
SVGвектор, масштабируется без потери качестваиконки, иллюстрации
GIFпростая анимациямелкие анимации
💡
Иконки почти всегда делают в SVG — вектор теряет качество при увеличении, а как файл весит копейки. Веб-сервисы типа TinyPNG сжимают растровые картинки почти без потерь.

Ленивая загрузка и скорость сайта

Страница не обязана ждать загрузки всех картинок сразу. Атрибут loading="lazy" подгружает изображение, только когда пользователь докрутил до него:

<img src="gallery/photo-12.jpg"
     alt="Фото из поездки"
     loading="lazy" decoding="async">
⚠️
Всем картинкам ниже «первого экрана» ставьте loading="lazy". Первому экрану — наоборот, eager (по умолчанию): там лень только навредит, пользователь уже смотрит на эту картинку.

Семантика таблиц: caption и scope

Таблицам можно дать подпись <caption>, а заголовки колонок пометить scope="col" — так её понимают скринридеры и поисковики:

<table>
  <caption>Расписание занятий</caption>
  <tr>
    <th scope="col">День</th>
    <th scope="col">Тема</th>
  </tr>
  <tr><td>Пн</td><td>HTML</td></tr>
</table>
💡
Доступность — не прихоть: мировая статистика показывает, что корректные таблицы лучше ранжируются и читаются ассистентами.

Ссылка «наверх» и глубокие якоря

Якорь можно направить не только вниз, но и «наверх» — на любого предка, у которого есть id. Классика — кнопка возврата:

<body id="top">
  <a href="#top">↑ Наверх</a>

  <!-- или на любой блок -->
  <a href="#footer">К контактам</a>
  <footer id="footer">...</footer>
💡
Якорные ссылки работают и между страницами: <a href="contacts.html#map"> — откроет страницу и сразу прокрутит к блоку.

Безопасные ссылки: rel="noopener"

При открытии в новой вкладке передавайте rel="noopener noreferrer" — тогда вкладка-цель не получит ссылку на вашу страницу и не сможет ею манипулировать:

<a href="https://example.com"
   target="_blank"
   rel="noopener noreferrer">Внешняя ссылка</a>
ℹ️
Современные браузеры подразумевают noopener автоматически у target="_blank", но правило «отец и сын» не мешает: noreferrer ещё и отключает передачу реферера.

Адаптивные изображения: srcset и <picture>

Тег <picture> и атрибут srcset подсказывают браузеру несколько вариантов картинки — для экрана, плотности пикселей и формата:

<picture>
  <source srcset="hero.webp" type="image/webp">
  <img src="hero.jpg"
       srcset="hero@2x.jpg 2x"
       alt="Баннер">
</picture>
💡
Та же @2x-логика применима и в CSS — background-image: -webkit-image-set(url(...) 2x). На ретине телефон запросит картинку вдвое чётче, а на обычном экране — полегче.

Встраивание: iframe

В чужой контент — карты, видео, формы — встраивают через <iframe>:

<iframe src="https://www.openstreetmap.org/export/embed.html"
        width="500" height="300"
        loading="lazy"></iframe>
⚠️
Браузеры блокируют «открытые» iframe без разрешения сайта. Ограничение снимает атрибут sandbox или заголовок X-Frame-Options на стороне встраиваемого ресурса.

Мета-теги соцсетей (Open Graph)

Шаринг в мессенджерах и соцсетях показывает превью-карточку. Ею управляют OG-теги:

<meta property="og:title" content="WebDev Уроки">
<meta property="og:image" content="https://dev.ru/preview.png">
<meta property="og:description" content="Курс по вебу">
💡
Картинка должна лежать по абсолютной ссылке и быть ~1200×630. Проверить превью можно, вставив ссылку в мессенджер.

Скачивание файла: download

Ссылку можно превратить в кнопку «скачать» — браузер не откроет файл, а сохранит его:

<a href="files/resume.pdf" download>Скачать резюме</a>

<!-- можно задать своё имя загрузки: -->
<a href="files/report.pdf" download="Отчёт-2026.pdf">Скачать</a>

Ссылки mailto и tel

Контактные ссылки открывают почтовый клиент или приложение для звонков:

<a href="mailto:hi@site.ru?subject=Вопрос">Написать нам</a>
<a href="tel:+79990000000">Позвонить</a>
ℹ️
Do самому полю subject, body и прочие параметры передаются знаком ? после адреса.

colspan и rowspan

Ячейки таблицы объединяются по строкам и столбцам:

<table>
  <tr>
    <th colspan="2">Объединённый заголовок</th>
  </tr>
  <tr>
    <td rowspan="2">Радужка на две строки</td>
    <td>право 1</td>
  </tr>
  <tr>
    <td>право 2</td>
  </tr>
</table>

Размер изображений для скорости

Скорость загрузки — часть вёрстки. Держите под контролем:

<img src="hero.webp" alt="Баннер" width="1200" height="500">
💡
Поможет PageSpeed Insights (от Google): он покажет, какие картинки весят больше нормы.

Картинка без файла: data URI

Маленькую картинку можно встроить прямо в атрибут — идеально для иконок и прелоадеров:

<img alt="Иконка"
     src="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24'><circle r='10' fill='%2338bdf8'/></svg>">
⚠️
Техника хороша для крохотных файлов. Картинку в несколько сотен килобайт так кодировать не стоит — страница потяжелеет.

Редирект через meta refresh

Страница может «прыгнуть» на другой адрес без JavaScript:

<meta http-equiv="refresh" content="0; url=https://new-site.ru">
ℹ️
То же самое — через сервер (301/302) или JS location.href. Для постоянных переносов предпочтителен серверный 301: он «склеивает» в поиске.

video: autoplay, muted, loop

Встроенный плеер управляется атрибутами прямо в разметке:

<video autoplay muted loop controls>
  <source src="bg.mp4" type="video/mp4">
</video>
⚠️
Autoplay со звуком браузеры блокируют (анти-наглость). Поэтому фоновое видео «беззвучно» = muted обязательно.

SVG прямо в HTML

Вектор вставляется тегом — это текст, который можно красить из CSS и анимировать:

<svg width="80" height="80">
  <circle cx="40" cy="40" r="36" fill="#38bdf8"></circle>
</svg>
💡
SVG-иконку можно стилизовать: fill, stroke, переходы и hover работают как у обычного элемента.

Favicon: иконка вкладки

Вкладка и закладки украшает маленькая иконка — её подключают тегом link:

<link rel="icon" href="favicon.ico" sizes="any">
<link rel="icon" type="image/svg+xml" href="favicon.svg">

CORS: доступ к чужим ресурсам

Загружать можно многое, но манипулировать чужими данными — только по правилам. О них вам скажут в консоли:

<!-- свои/простые ресурсы грузятся свободно -->
<img src="https://cdn.site.ru/logo.png">

<!-- чтение данных (fetch и др.) требует CORS-заголовков -->
fetch("https://api.other.ru/data");
ℹ️
Ошибка «No Access-Control-Allow-Origin» — не о вас: чужой сервер не разрешил чтение. Если API ваш — добавьте заголовок или проксируйте через свой сервер.

Меню из списков

Классическая навигация строится на <ul> и <a> внутри <nav>:

<nav>
  <ul>
    <li><a href="/">Главная</a></li>
    <li><a href="/blog">Блог</a></li>
  </ul>
</nav>
💡
Списки по умолчанию показываются маркером; в CSS его убирают list-style: none. Так и делают все меню мира.

Query-параметры в ссылках

После ? передают данные между страницами — при фильтрах, поиске, пагинации:

<a href="/catalog?category=notebooks&page=2">Ноутбуки, стр. 2</a>
ℹ️
В HTML амперсанд пишут как &amp; — иначе часть параметра может потеряться при обработке.

alt и семантика изображений

Текст alt важен и когда картинка не загрузилась, и для незрячих пользователей. Что писать:

<!-- Содержательные картинки: опишите смысл -->
<img src="diagram.png" alt="График роста продаж за год">

<!-- Декоративные: пустой alt -->
<img src="line.png" alt="">
⚠️
Пусто — это alt="", а не пропуск. Пропущенный alt у скринридера превратится в «картинка» — шум. Фото рядом с названием в тексте можно писать и как alt="Фото кота".

Мини-проект: страница визитка

Попробуйте собрать трёхстраничный мини-сайт. Простой вариант файловой структуры:

my-site/
├── index.html   <!-- главная -->
├── gallery.html <!-- галерея -->
├── contacts.html<!-- контакты -->
└── images/
    └── avatar.jpg
  1. На главной — заголовок, абзац и ссылка «Галерея».
  2. В галерее — три изображения в одну строку.
  3. В контактах — якорь вниз к блоку с mailto:-ссылкой.
  4. Между всеми страницами — взаимная навигация.