Menu

Ссылки в HTML: как сделать ссылку через тег a и href

Как элемент <a> создает ссылки: атрибут href, абсолютные и относительные URL, переход к разделу страницы через #id, ссылки на скачивание, ссылки-карточки и ошибки, которые их ломают.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

Как сделать ссылку в HTML

Ссылка это элемент-якорь <a> с атрибутом href. href задает, куда ведет ссылка; содержимое между тегами это то, по чему кликает читатель.

Браузеры показывают ссылки синими и подчеркнутыми и меняют курсор на руку. Последняя строка показывает, почему важен href: без него <a> это обычный текст. Он не получает фокус, не кликается и не оформлен как ссылка.

Абсолютные и относительные URL

Значение href определяет, куда ведет ссылка. Основные формы:

hrefКуда ведет
https://example.com/pageАбсолютный URL: ровно этот адрес
/aboutabout в корне текущего сайта
about.htmlabout.html в той же папке, что и текущая страница
../index.htmlindex.html на одну папку выше
#pricingЭлемент с id="pricing" на этой странице
/help#faqРаздел faq другой страницы этого сайта
mailto:hi@example.comНовое письмо в почтовой программе читателя
tel:+15551234567Телефонный звонок на устройствах, которые умеют звонить

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

<a href="https://www.wikipedia.org/">Wikipedia</a>  <!-- another site -->
<a href="/pricing">Pricing</a>                     <!-- same site, from the root -->
<a href="www.wikipedia.org">Broken</a>              <!-- relative path, not a site! -->

Последняя строка показывает самую частую ошибку в ссылках. Без https:// браузер читает www.wikipedia.org как имя файла в текущей папке.

У ссылок на почту и телефон есть отдельная страница: ссылка mailto в HTML.

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

Целью может быть любой элемент с id. Сошлитесь на него через # и id, и браузер прокрутит к нему. Кликните по ссылкам в превью:

Некоторые детали:

  • id должен совпадать точно, включая регистр. href="#FAQ" не найдет id="faq".
  • href="#top" и href="#" прокручивают к началу страницы, даже если ни у одного элемента нет id top.
  • Селектор :target оформляет раздел, на который сейчас указывает URL. На настоящей странице подсветка видна; превью прокручивается, не меняя свой адрес, поэтому в нем подсветки нет.
  • Чтобы сослаться на раздел другой страницы, добавьте решетку к URL этой страницы: <a href="/docs/html/table#caption">.

Якорные ссылки под закрепленной шапкой

Закрепленная или фиксированная шапка закрывает верх раздела, к которому выполнен переход. scroll-margin-top у целей оставляет под нее место, а scroll-behavior: smooth делает переход плавным:

Удалите строку scroll-margin-top и снова кликните Two: заголовок окажется спрятан за темной шапкой.

Ссылки на скачивание

Атрибут download просит браузер сохранить файл, а не открыть его. Его значение, если вы его зададите, это предлагаемое имя файла:

<a href="/files/report-2026.pdf" download>Download the report</a>
<a href="/files/r-8f2a.pdf" download="report.pdf">Download (saved as report.pdf)</a>

download работает только для файлов с того же источника, что и страница (та же схема, хост и порт), а также для URL data: и blob:. Для файла с другого источника, даже с поддомена, браузеры его игнорируют и открывают файл как обычную ссылку. Сервер может заставить скачать любой файл заголовком Content-Disposition: attachment.

Понятный текст ссылок

Пользователи программ чтения с экрана часто перемещаются по странице от ссылки к ссылке и слышат только текст ссылки. «Нажмите здесь» и «Подробнее» им ничего не говорят.

<!-- Vague: -->
To see our prices, <a href="/pricing">click here</a>.

<!-- Clear: -->
See the <a href="/pricing">pricing plans</a>.

Атрибут title показывает подсказку при наведении, но не виден на сенсорных экранах и большинству пользователей клавиатуры, поэтому не пишите в нем ничего важного.

Ссылка на всю карточку

<a> может оборачивать блочное содержимое: заголовок, картинка и абзац могут быть одной ссылкой. Так делают кликабельные карточки.

display: block делает кликабельным весь блок, а не только текст. Содержимое карточки держите коротким, потому что программа чтения с экрана зачитывает его целиком как название ссылки. И никогда не кладите внутрь другую ссылку или кнопку: интерактивные элементы нельзя вкладывать в <a>.

Другие атрибуты тега a

АтрибутЧто делает
hrefАдрес назначения. Без него <a> не является ссылкой
targetГде открыть; target="_blank" открывает новую вкладку, см. открыть ссылку в новой вкладке
relОтношение к цели: noopener, nofollow, sponsored, ugc
downloadСохранить файл, а не открыть его
hreflangЯзык связанной страницы, как подсказка
referrerpolicyСколько от текущего URL отправлять в качестве referrer

Частые ошибки

  • Внешний URL без схемы. href="www.site.com" это относительный путь. Пишите https://.
  • <a href="#"> для действия JavaScript. Он прокручивает к началу и добавляет # к URL. Если клик никуда не ведет, используйте <button>.
  • Ссылка внутри ссылки или кнопка внутри ссылки. И то, и другое некорректный HTML: второй <a> заставляет парсер досрочно закрыть первый, а у клика по кнопке внутри ссылки нет ясной цели.
  • Пробелы в именах файлов. href="my file.html" обычно работает, потому что браузер кодирует пробел, но my-file.html снимает вопрос полностью.
  • «Нажмите здесь» в тексте ссылки. Лучше опишите, куда она ведет.
  • Разный регистр id. #Pricing и id="pricing" различаются.

Часто задаваемые вопросы

Как сделать ссылку в HTML?

Используйте элемент-якорь: <a href="https://example.com">Example</a>. href это адрес назначения, а текст между тегами это то, по чему кликает читатель.

Как расшифровывается href?

Hypertext reference, «гипертекстовая ссылка». В нем хранится URL, на который ведет ссылка: полный адрес, путь на том же сайте вроде /about, раздел страницы вроде #pricing или схема вроде mailto:.

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

Дайте целевому элементу id и сошлитесь на него через решетку: <h2 id="faq">FAQ</h2> и <a href="#faq">FAQ</a>. С другой страницы добавьте решетку к URL: <a href="/help#faq">.

Почему ссылка с www ведет не на ту страницу?

Без https:// браузер считает www.example.com относительным путем на вашем собственном сайте, и ссылка ведет куда-то вроде yoursite.com/www.example.com. Для внешних ссылок всегда пишите схему: href="https://www.example.com".

Может ли тег a содержать div?

Да. В HTML5 <a> может оборачивать блочное содержимое, например <div>, заголовок и абзац, так и делают ссылки на всю карточку. Внутри не может быть другой ссылки, кнопки или любого другого интерактивного элемента.

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ