Ссылки
Элемент
<a>(anchor) создаёт гиперссылку -- основу навигации в вебе, связывающую документы и ресурсы.
Зачем нужно
Ссылки -- фундамент гипертекста. Они позволяют переходить между страницами, скачивать файлы, отправлять email, звонить. Правильное использование <a> критично для SEO (внутренняя перелинковка), доступности (screen readers) и безопасности (rel="noopener").
Где используется
- Навигация по сайту
- Ссылки на внешние ресурсы
- Якорные ссылки (навигация внутри страницы)
- Скачивание файлов
- Email и телефонные ссылки
Предпосылки
Базовый синтаксис
<a href="https://example.com">Текст ссылки</a>
Виды ссылок
Абсолютные и относительные
<!-- Абсолютная ссылка -->
<a href="https://example.com/about">О нас</a>
<!-- Относительная: от текущей страницы -->
<a href="about.html">О нас</a>
<a href="../index.html">На главную</a>
<!-- Относительная: от корня сайта -->
<a href="/about">О нас</a>
<a href="/catalog/item-1">Товар</a>
<!-- Протокол-независимая -->
<a href="//example.com/page">Ссылка</a>
Якорные ссылки (anchor links)
<!-- Ссылка на секцию на той же странице -->
<a href="#contacts">Перейти к контактам</a>
<!-- Целевой элемент -->
<section id="contacts">
<h2>Контакты</h2>
<p>info@example.com</p>
</section>
<!-- Ссылка на секцию другой страницы -->
<a href="/about#team">Наша команда</a>
<!-- Наверх страницы -->
<a href="#">Наверх</a>
<a href="#top">Наверх</a> <!-- если есть id="top" -->
Email-ссылки
<!-- Простая -->
<a href="mailto:info@example.com">Написать нам</a>
<!-- С темой и телом -->
<a href="mailto:info@example.com?subject=Вопрос&body=Здравствуйте!">
Задать вопрос
</a>
<!-- Несколько получателей -->
<a href="mailto:info@example.com,support@example.com">
Написать команде
</a>
Телефонные ссылки
<a href="tel:+79001234567">+7 (900) 123-45-67</a>
<!-- С добавочным -->
<a href="tel:+79001234567,123">+7 (900) 123-45-67, доб. 123</a>
Скачивание файлов
<!-- Скачать файл -->
<a href="/files/report.pdf" download>Скачать отчёт (PDF)</a>
<!-- Скачать с другим именем -->
<a href="/files/report-2026-04.pdf" download="Отчёт за апрель.pdf">
Скачать отчёт
</a>
download работает только для same-origin URL. Для cross-origin сервер должен отправить правильные заголовки.
Атрибут target
<!-- В текущей вкладке (по умолчанию) -->
<a href="/page" target="_self">Ссылка</a>
<!-- В новой вкладке -->
<a href="https://external.com" target="_blank" rel="noopener noreferrer">
Внешний сайт
</a>
<!-- В родительском фрейме -->
<a href="/page" target="_parent">Ссылка</a>
<!-- Во всём окне (выход из фреймов) -->
<a href="/page" target="_top">Ссылка</a>
Безопасность target="_blank"
<!-- ПЛОХО: уязвимость! Без rel внешний сайт получает доступ к window.opener -->
<a href="https://evil.com" target="_blank">Опасная ссылка</a>
<!-- ХОРОШО: rel="noopener noreferrer" -->
<a href="https://external.com" target="_blank" rel="noopener noreferrer">
Безопасная ссылка
</a>
Современные браузеры автоматически добавляют noopener для target="_blank", но явное указание rel -- хорошая практика.
Атрибут rel
<!-- Внешние ссылки -->
<a href="https://external.com" rel="noopener noreferrer">Внешний</a>
<a href="https://partner.com" rel="nofollow">Партнёр (не передавать SEO-вес)</a>
<a href="https://ad.com" rel="sponsored">Реклама</a>
<a href="https://forum.com/post" rel="ugc">Пользовательский контент</a>
<!-- Навигация -->
<a href="/prev" rel="prev">Предыдущая</a>
<a href="/next" rel="next">Следующая</a>
<!-- Автор -->
<a href="/author/ivan" rel="author">Иван Петров</a>
<!-- Помощь -->
<a href="/help" rel="help">Справка</a>
Значение rel |
Назначение |
|---|---|
noopener |
Не давать доступ к window.opener |
noreferrer |
Не отправлять Referer-заголовок |
nofollow |
Не передавать SEO-вес (PageRank) |
sponsored |
Оплаченная ссылка |
ugc |
User Generated Content (пользовательский) |
prev / next |
Пагинация |
author |
Ссылка на автора |
external |
Внешняя ссылка |
Ссылка-обёртка (HTML5)
В HTML5 <a> может оборачивать блочные элементы:
<a href="/article/42" class="card-link">
<article class="card">
<img src="thumb.jpg" alt="" width="300" height="200">
<h2>Заголовок статьи</h2>
<p>Краткое описание...</p>
</article>
</a>
<style>
.card-link {
text-decoration: none;
color: inherit;
display: block;
}
</style>
Состояния ссылок (CSS)
/* Порядок важен: LoVe HAte (Link, Visited, Hover, Active) */
a:link { color: #0066cc; } /* Непосещённая */
a:visited { color: #551a8b; } /* Посещённая */
a:hover { color: #0044aa; } /* При наведении */
a:focus { outline: 2px solid blue; } /* При фокусе (a11y!) */
a:active { color: #cc0000; } /* При нажатии */
Доступность ссылок
<!-- ПЛОХО: "нажмите сюда" -- бессмысленно для screen reader -->
<p>Подробнее <a href="/details">нажмите сюда</a>.</p>
<!-- ХОРОШО: текст ссылки описывает цель -->
<p><a href="/details">Подробнее о тарифах и ценах</a>.</p>
<!-- Если нужен короткий текст + развёрнутое описание -->
<a href="/report.pdf" aria-label="Скачать годовой отчёт за 2025 (PDF, 2.3 МБ)">
Скачать отчёт
</a>
<!-- Визуальная индикация внешней ссылки -->
<a href="https://external.com" target="_blank" rel="noopener">
Внешний сайт <span aria-hidden="true">↗</span>
<span class="visually-hidden">(открывается в новой вкладке)</span>
</a>
Частые ошибки
| Ошибка | Почему плохо | Как правильно |
|---|---|---|
| "Нажмите сюда" | Бессмысленно вне контекста | Описательный текст ссылки |
target="_blank" без rel |
Потенциальная уязвимость | rel="noopener noreferrer" |
<a href="#"> как кнопка |
Семантически неверно, меняет URL | Используй <button> |
<a> без href |
Не фокусируется, не кликабельна | href обязателен для интерактивности |
<a href=""> |
Перезагружает текущую страницу | Укажи конкретный URL |
Вложенные <a> |
Невалидно | <a> не может содержать <a> |
Ссылка на javascript:void(0) |
Не работает без JS, плохо для a11y | <button> для действий |
Практика
- Создай навигационное меню с внутренними ссылками
- Добавь якорные ссылки на секции страницы
- Создай ссылки mailto и tel
- Добавь ссылку с
downloadдля скачивания файла - Проверь все внешние ссылки на наличие
rel="noopener noreferrer" - Проверь ссылки Tab-ом -- все должны быть доступны с клавиатуры
Связанные темы
- Семантическая разметка -- когда
<a>, когда<button> - Фокус и клавиатурная навигация -- навигация по ссылкам
- Open Graph и SEO -- ссылки и SEO
- Списки -- навигационные списки