HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>23 июл 2025</li>
2 <ul><li>23 июл 2025</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Разбираем атрибуты href, target, rel, якоря, скачивание файлов и другие возможности тега &lt; a &gt;.</p>
4 </ul><p>Разбираем атрибуты href, target, rel, якоря, скачивание файлов и другие возможности тега &lt; a &gt;.</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6 <p>Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.</p>
6 <p>Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.</p>
7 <p>Тег &lt;a&gt; - основа навигации в HTML. С его помощью создаются ссылки, которые ведут на другие страницы, на разделы внутри сайта, на email, телефоны, файлы или даже запускают JavaScript. В этом руководстве мы покажем, как работает &lt;a&gt;, зачем нужен каждый его атрибут и какие ошибки чаще всего делают новички.</p>
7 <p>Тег &lt;a&gt; - основа навигации в HTML. С его помощью создаются ссылки, которые ведут на другие страницы, на разделы внутри сайта, на email, телефоны, файлы или даже запускают JavaScript. В этом руководстве мы покажем, как работает &lt;a&gt;, зачем нужен каждый его атрибут и какие ошибки чаще всего делают новички.</p>
8 <p><strong>Содержание</strong></p>
8 <p><strong>Содержание</strong></p>
9 <ul><li><a>Как работает тег &lt;a&gt;</a></li>
9 <ul><li><a>Как работает тег &lt;a&gt;</a></li>
10 <li><a>Что такое якорные ссылки и как их использовать</a></li>
10 <li><a>Что такое якорные ссылки и как их использовать</a></li>
11 <li><a>Как работает атрибут target</a></li>
11 <li><a>Как работает атрибут target</a></li>
12 <li><a>Как target работает с фреймами</a></li>
12 <li><a>Как target работает с фреймами</a></li>
13 <li><a>Для чего нужен атрибут rel</a></li>
13 <li><a>Для чего нужен атрибут rel</a></li>
14 <li><a>Запуск кода при клике на ссылку</a></li>
14 <li><a>Запуск кода при клике на ссылку</a></li>
15 <li><a>Стилизация тега &lt;a&gt; с помощью CSS</a></li>
15 <li><a>Стилизация тега &lt;a&gt; с помощью CSS</a></li>
16 <li><a>Типичные ошибки при работе с тегом &lt;a&gt;</a></li>
16 <li><a>Типичные ошибки при работе с тегом &lt;a&gt;</a></li>
17 </ul><p>Тег &lt;a&gt; (от anchor - "якорь") в HTML используется для создания ссылок. С его помощью можно направить пользователя на другую страницу, документ, email или даже начать звонок.</p>
17 </ul><p>Тег &lt;a&gt; (от anchor - "якорь") в HTML используется для создания ссылок. С его помощью можно направить пользователя на другую страницу, документ, email или даже начать звонок.</p>
18 <p>Это парный тег: у него есть открывающая и закрывающая часть - &lt;a&gt; и &lt;/a&gt;. Между ними помещается текст, на который можно кликнуть.</p>
18 <p>Это парный тег: у него есть открывающая и закрывающая часть - &lt;a&gt; и &lt;/a&gt;. Между ними помещается текст, на который можно кликнуть.</p>
19 <p>Вот самый простой пример:</p>
19 <p>Вот самый простой пример:</p>
20 &lt;a href="https://skillbox.ru/"&gt;Официальный сайт Skillbox&lt;/a&gt;<p>В браузере это будет выглядеть как обычная синяя ссылка: <a><strong>Официальный сайт Skillbox</strong></a>. Если кликнуть на неё, откроется главная страница Skillbox.</p>
20 &lt;a href="https://skillbox.ru/"&gt;Официальный сайт Skillbox&lt;/a&gt;<p>В браузере это будет выглядеть как обычная синяя ссылка: <a><strong>Официальный сайт Skillbox</strong></a>. Если кликнуть на неё, откроется главная страница Skillbox.</p>
21 <p>Чтобы ссылка заработала, тегу &lt;a&gt; нужен атрибут href. Он указывает, куда должен перейти пользователь после клика. Без href это просто оформленный текст, а не настоящая ссылка.</p>
21 <p>Чтобы ссылка заработала, тегу &lt;a&gt; нужен атрибут href. Он указывает, куда должен перейти пользователь после клика. Без href это просто оформленный текст, а не настоящая ссылка.</p>
22 <p>Атрибут href умеет работать с разными типами адресов - не только с веб-сайтами. Давайте разберём на примерах.</p>
22 <p>Атрибут href умеет работать с разными типами адресов - не только с веб-сайтами. Давайте разберём на примерах.</p>
23 <p>Самый привычный случай - ссылка на веб-страницу. Указываем адрес, и пользователь попадёт туда при клике:</p>
23 <p>Самый привычный случай - ссылка на веб-страницу. Указываем адрес, и пользователь попадёт туда при клике:</p>
24 &lt;a href="https://skillbox.ru/"&gt;Официальный сайт Skillbox&lt;/a&gt;<p>Если вы хотите дать доступ к файлу через FTP-протокол, можно сделать так:</p>
24 &lt;a href="https://skillbox.ru/"&gt;Официальный сайт Skillbox&lt;/a&gt;<p>Если вы хотите дать доступ к файлу через FTP-протокол, можно сделать так:</p>
25 &lt;a href="ftp://example.com/file.zip"&gt;Скачать файл по FTP&lt;/a&gt;<p>Такой формат используется всё реже - в основном для внутренних систем.</p>
25 &lt;a href="ftp://example.com/file.zip"&gt;Скачать файл по FTP&lt;/a&gt;<p>Такой формат используется всё реже - в основном для внутренних систем.</p>
26 <p>Можно создать ссылку на файл на вашем компьютере:</p>
26 <p>Можно создать ссылку на файл на вашем компьютере:</p>
27 &lt;a href="file:///C:/Users/User/Documents/file.txt"&gt;Открыть локальный файл&lt;/a&gt;<p>Но это работает только у вас - с другого компьютера такую ссылку не откроешь. Такие ссылки обычно используют во время тестирования.</p>
27 &lt;a href="file:///C:/Users/User/Documents/file.txt"&gt;Открыть локальный файл&lt;/a&gt;<p>Но это работает только у вас - с другого компьютера такую ссылку не откроешь. Такие ссылки обычно используют во время тестирования.</p>
28 <p>Иногда нужно сделать ссылку, которая никуда не ведёт. Например, вы ещё не решили, куда будет вести кнопка, или хотите просто отловить клик с помощью JavaScript.</p>
28 <p>Иногда нужно сделать ссылку, которая никуда не ведёт. Например, вы ещё не решили, куда будет вести кнопка, или хотите просто отловить клик с помощью JavaScript.</p>
29 <p>В таких случаях можно написать:</p>
29 <p>В таких случаях можно написать:</p>
30 &lt;a href="#"&gt;Открыть эту же страницу&lt;/a&gt; &lt;a href=""&gt;Ещё вариант&lt;/a&gt;<p>При клике браузер либо остановится на месте, либо прокрутит страницу вверх. Это удобно, если вы хотите "поймать" клик с помощью JavaScript.</p>
30 &lt;a href="#"&gt;Открыть эту же страницу&lt;/a&gt; &lt;a href=""&gt;Ещё вариант&lt;/a&gt;<p>При клике браузер либо остановится на месте, либо прокрутит страницу вверх. Это удобно, если вы хотите "поймать" клик с помощью JavaScript.</p>
31 <p>Если вы хотите не просто открыть файл, а предложить пользователю его скачать, используйте атрибут download:</p>
31 <p>Если вы хотите не просто открыть файл, а предложить пользователю его скачать, используйте атрибут download:</p>
32 &lt;a href="https://site.com/file.pdf" download&gt;Скачать PDF&lt;/a&gt;<p>Браузер предложит сохранить файл на компьютер, а не откроет его.</p>
32 &lt;a href="https://site.com/file.pdf" download&gt;Скачать PDF&lt;/a&gt;<p>Браузер предложит сохранить файл на компьютер, а не откроет его.</p>
33 <p>Можно сделать ссылку, при клике на которую откроется почтовый клиент с готовым адресом получателя:</p>
33 <p>Можно сделать ссылку, при клике на которую откроется почтовый клиент с готовым адресом получателя:</p>
34 &lt;a href="mailto:hello@skillbox.ru"&gt;Написать в Skillbox&lt;/a&gt;<p>Это работает, если у пользователя установлен почтовый клиент (например, Outlook или Mail).</p>
34 &lt;a href="mailto:hello@skillbox.ru"&gt;Написать в Skillbox&lt;/a&gt;<p>Это работает, если у пользователя установлен почтовый клиент (например, Outlook или Mail).</p>
35 <p>На мобильных устройствах удобно делать кликабельные номера:</p>
35 <p>На мобильных устройствах удобно делать кликабельные номера:</p>
36 &lt;a href="tel:+78006007847"&gt;Позвонить нам&lt;/a&gt;<p>Когда человек нажмёт на такую ссылку, телефон сразу предложит набрать номер.</p>
36 &lt;a href="tel:+78006007847"&gt;Позвонить нам&lt;/a&gt;<p>Когда человек нажмёт на такую ссылку, телефон сразу предложит набрать номер.</p>
37 <p>Якорные ссылки позволяют перемещаться по одной и той же странице. Представьте длинную статью - такую как эта. Вы хотите, чтобы читатель мог нажать на ссылку в разделе "Содержание" в начале и сразу перейти к нужному разделу. Вот тут и приходит на помощь якорь.</p>
37 <p>Якорные ссылки позволяют перемещаться по одной и той же странице. Представьте длинную статью - такую как эта. Вы хотите, чтобы читатель мог нажать на ссылку в разделе "Содержание" в начале и сразу перейти к нужному разделу. Вот тут и приходит на помощь якорь.</p>
38 <p>Это работает просто.</p>
38 <p>Это работает просто.</p>
39 <p>Назначаем имя блоку, в который хотим попасть. Для этого используем атрибут id:</p>
39 <p>Назначаем имя блоку, в который хотим попасть. Для этого используем атрибут id:</p>
40 &lt;section id="about"&gt; &lt;h2&gt;О нас&lt;/h2&gt; &lt;p&gt;Этот раздел рассказывает о нашей команде.&lt;/p&gt; &lt;/section&gt;<p>Создаём ссылку на этот id, добавляя href="#имя":</p>
40 &lt;section id="about"&gt; &lt;h2&gt;О нас&lt;/h2&gt; &lt;p&gt;Этот раздел рассказывает о нашей команде.&lt;/p&gt; &lt;/section&gt;<p>Создаём ссылку на этот id, добавляя href="#имя":</p>
41 &lt;a href="#about"&gt;Перейти к разделу "О нас"&lt;/a&gt;<p>Теперь, когда пользователь нажмёт на ссылку, страница прокрутится к нужному блоку.</p>
41 &lt;a href="#about"&gt;Перейти к разделу "О нас"&lt;/a&gt;<p>Теперь, когда пользователь нажмёт на ссылку, страница прокрутится к нужному блоку.</p>
42 <p>Можно сделать и обратный переход - например, кнопку "Наверх":</p>
42 <p>Можно сделать и обратный переход - например, кнопку "Наверх":</p>
43 &lt;a href="#top"&gt;Вернуться к началу&lt;/a&gt;<p>Для этого где-то в начале страницы нужно поставить:</p>
43 &lt;a href="#top"&gt;Вернуться к началу&lt;/a&gt;<p>Для этого где-то в начале страницы нужно поставить:</p>
44 &lt;div id="top"&gt;&lt;/div&gt;<p>Помните, что имя якоря (id) на странице должно быть уникальным. Иначе браузер запутается и не поймёт, куда вести пользователя.</p>
44 &lt;div id="top"&gt;&lt;/div&gt;<p>Помните, что имя якоря (id) на странице должно быть уникальным. Иначе браузер запутается и не поймёт, куда вести пользователя.</p>
45 <p>Кстати, переходы по якорям можно сделать не только с помощью ссылок &lt;a&gt;, но и с помощью кнопок или элементов меню. Например, если вы хотите, чтобы кнопка перенесла пользователя к нужному разделу страницы, можно написать так:</p>
45 <p>Кстати, переходы по якорям можно сделать не только с помощью ссылок &lt;a&gt;, но и с помощью кнопок или элементов меню. Например, если вы хотите, чтобы кнопка перенесла пользователя к нужному разделу страницы, можно написать так:</p>
46 &lt;button onclick="location.href='#about'"&gt;Перейти к разделу "О нас"&lt;/button&gt;<p>При клике браузер выполнит переход к блоку с id="about", как если бы это была обычная ссылка.</p>
46 &lt;button onclick="location.href='#about'"&gt;Перейти к разделу "О нас"&lt;/button&gt;<p>При клике браузер выполнит переход к блоку с id="about", как если бы это была обычная ссылка.</p>
47 <p>Атрибут target отвечает за то, где откроется ссылка, когда по ней кликнут: в той же вкладке, в новой или в отдельном окне.</p>
47 <p>Атрибут target отвечает за то, где откроется ссылка, когда по ней кликнут: в той же вкладке, в новой или в отдельном окне.</p>
48 <p>Это поведение по умолчанию. Если вы не укажете target вообще, ссылка откроется в той же вкладке, где вы находитесь.</p>
48 <p>Это поведение по умолчанию. Если вы не укажете target вообще, ссылка откроется в той же вкладке, где вы находитесь.</p>
49 &lt;a href="https://skillbox.ru"&gt;Открыть в этой вкладке&lt;/a&gt;<p>Или:</p>
49 &lt;a href="https://skillbox.ru"&gt;Открыть в этой вкладке&lt;/a&gt;<p>Или:</p>
50 &lt;a href="https://skillbox.ru" target="_self"&gt;Открыть в этой вкладке&lt;/a&gt;<p>Если вы хотите, чтобы ссылка открывалась в новой вкладке браузера, используйте target="_blank":</p>
50 &lt;a href="https://skillbox.ru" target="_self"&gt;Открыть в этой вкладке&lt;/a&gt;<p>Если вы хотите, чтобы ссылка открывалась в новой вкладке браузера, используйте target="_blank":</p>
51 &lt;a href="https://google.ru" target="_blank"&gt;Открыть в новой вкладке&lt;/a&gt;<p>Используйте blank, если хотите, чтобы пользователь не потерял страницу. Например, если вы ведёте его на внешний сайт, а он ещё не дочитал вашу статью.</p>
51 &lt;a href="https://google.ru" target="_blank"&gt;Открыть в новой вкладке&lt;/a&gt;<p>Используйте blank, если хотите, чтобы пользователь не потерял страницу. Например, если вы ведёте его на внешний сайт, а он ещё не дочитал вашу статью.</p>
52 <p>Представьте, что внутри вашей страницы есть небольшое "окошко": в нём загружается другая HTML-страница. Это и есть фрейм, а точнее, тег &lt;iframe&gt;. Он позволяет показывать один сайт внутри другого. Фреймы используют довольно редко - чаще &lt;iframe&gt; применяется для встраивания видео с YouTube, карт или блоков комментариев.</p>
52 <p>Представьте, что внутри вашей страницы есть небольшое "окошко": в нём загружается другая HTML-страница. Это и есть фрейм, а точнее, тег &lt;iframe&gt;. Он позволяет показывать один сайт внутри другого. Фреймы используют довольно редко - чаще &lt;iframe&gt; применяется для встраивания видео с YouTube, карт или блоков комментариев.</p>
53 <p>Иногда бывает нужно, чтобы ссылка меняла содержимое именно этого фрейма, а не открывала новую вкладку или страницу. Вот тут и помогает атрибут target.</p>
53 <p>Иногда бывает нужно, чтобы ссылка меняла содержимое именно этого фрейма, а не открывала новую вкладку или страницу. Вот тут и помогает атрибут target.</p>
54 <p>Основные значения target для фреймов:</p>
54 <p>Основные значения target для фреймов:</p>
55 <ul><li>_self - открывает ссылку в том же фрейме, где была нажата. Это значение используется по умолчанию.</li>
55 <ul><li>_self - открывает ссылку в том же фрейме, где была нажата. Это значение используется по умолчанию.</li>
56 <li>_parent - открывает ссылку в родительском окне, которое содержит фрейм.</li>
56 <li>_parent - открывает ссылку в родительском окне, которое содержит фрейм.</li>
57 <li>_top - покидает фрейм и открывает ссылку во всём окне браузера.</li>
57 <li>_top - покидает фрейм и открывает ссылку во всём окне браузера.</li>
58 </ul><p>Например у нас есть два HTML-файла, index (родительский) и inner (встроенный в index).</p>
58 </ul><p>Например у нас есть два HTML-файла, index (родительский) и inner (встроенный в index).</p>
59 <p>Родительский документ:</p>
59 <p>Родительский документ:</p>
60 &lt;!DOCTYPE html&gt; &lt;html lang="ru"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Родительский документ&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;Родительский документ&lt;/h1&gt; &lt;p&gt;Ниже находится встраиваемый фрейм (iframe), который загружает страницу &lt;strong&gt;inner.html&lt;/strong&gt;:&lt;/p&gt; &lt;iframe src="inner.html" width="600" height="300"&gt;&lt;/iframe&gt; &lt;/body&gt; &lt;/html&gt;<p>Вложенная страница:</p>
60 &lt;!DOCTYPE html&gt; &lt;html lang="ru"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Родительский документ&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;Родительский документ&lt;/h1&gt; &lt;p&gt;Ниже находится встраиваемый фрейм (iframe), который загружает страницу &lt;strong&gt;inner.html&lt;/strong&gt;:&lt;/p&gt; &lt;iframe src="inner.html" width="600" height="300"&gt;&lt;/iframe&gt; &lt;/body&gt; &lt;/html&gt;<p>Вложенная страница:</p>
61 &lt;!DOCTYPE html&gt; &lt;html lang="ru"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Вложенная страница&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;h2&gt;Вложенная страница&lt;/h2&gt; &lt;p&gt;Ниже приведены ссылки с разными значениями атрибута &lt;code&gt;target&lt;/code&gt;:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;strong&gt;target="_self"&lt;/strong&gt;: открывает ссылку в том же фрейме, где она расположена. &lt;br&gt; &lt;a href="https://example.com" target="_self"&gt;Открыть в текущем iframe (_self)&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;strong&gt;target="_parent"&lt;/strong&gt;: открывает ссылку в родительском документе, т. е. заменяет содержимое контейнера, в котором встроен iframe (в нашем случае это index.html). &lt;br&gt; &lt;a href="https://example.com" target="_parent"&gt;Открыть в родительском документе (_parent)&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;strong&gt;target="_top"&lt;/strong&gt;: открывает ссылку во всем окне браузера, убирая все фреймы. &lt;br&gt; &lt;a href="https://example.com" target="_top"&gt;Открыть в верхнем окне (_top)&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Попробуйте кликать по каждой ссылке и посмотрите, как меняется содержимое окна браузера.&lt;/p&gt; &lt;/body&gt; &lt;/html&gt;<p>В браузере это будет выглядеть вот так:</p>
61 &lt;!DOCTYPE html&gt; &lt;html lang="ru"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Вложенная страница&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;h2&gt;Вложенная страница&lt;/h2&gt; &lt;p&gt;Ниже приведены ссылки с разными значениями атрибута &lt;code&gt;target&lt;/code&gt;:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;strong&gt;target="_self"&lt;/strong&gt;: открывает ссылку в том же фрейме, где она расположена. &lt;br&gt; &lt;a href="https://example.com" target="_self"&gt;Открыть в текущем iframe (_self)&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;strong&gt;target="_parent"&lt;/strong&gt;: открывает ссылку в родительском документе, т. е. заменяет содержимое контейнера, в котором встроен iframe (в нашем случае это index.html). &lt;br&gt; &lt;a href="https://example.com" target="_parent"&gt;Открыть в родительском документе (_parent)&lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;strong&gt;target="_top"&lt;/strong&gt;: открывает ссылку во всем окне браузера, убирая все фреймы. &lt;br&gt; &lt;a href="https://example.com" target="_top"&gt;Открыть в верхнем окне (_top)&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Попробуйте кликать по каждой ссылке и посмотрите, как меняется содержимое окна браузера.&lt;/p&gt; &lt;/body&gt; &lt;/html&gt;<p>В браузере это будет выглядеть вот так:</p>
62 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Если мы кликнем по ссылке со значением _self атрибута target, то контент загрузится в текущем фрейме, не меняя содержимое всей страницы:</p>
62 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Если мы кликнем по ссылке со значением _self атрибута target, то контент загрузится в текущем фрейме, не меняя содержимое всей страницы:</p>
63 <em>Скриншот: Google Chrome / Skillbox Media</em><p>При клике на другие ссылки окно откроется уже в родительском фрейме или во всём окне браузера:</p>
63 <em>Скриншот: Google Chrome / Skillbox Media</em><p>При клике на другие ссылки окно откроется уже в родительском фрейме или во всём окне браузера:</p>
64 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Когда вы используете target="_blank" - то есть открываете ссылку в новой вкладке, браузер по умолчанию сохраняет связь между старой и новой страницей. Это означает, что внешний сайт может получить доступ к вашей странице через специальную переменную window.opener и, например, попытаться изменить её или перенаправить пользователя на фишинговый сайт.</p>
64 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Когда вы используете target="_blank" - то есть открываете ссылку в новой вкладке, браузер по умолчанию сохраняет связь между старой и новой страницей. Это означает, что внешний сайт может получить доступ к вашей странице через специальную переменную window.opener и, например, попытаться изменить её или перенаправить пользователя на фишинговый сайт.</p>
65 <p>Чтобы этого не допустить, к ссылке добавляют rel="noopener", - он разрывает эту связь и делает переход безопасным.</p>
65 <p>Чтобы этого не допустить, к ссылке добавляют rel="noopener", - он разрывает эту связь и делает переход безопасным.</p>
66 <p>Если вы не хотите, чтобы внешний сайт вообще знал, откуда пришёл пользователь (то есть не получал адреса вашей страницы), используют rel="noreferrer".</p>
66 <p>Если вы не хотите, чтобы внешний сайт вообще знал, откуда пришёл пользователь (то есть не получал адреса вашей страницы), используют rel="noreferrer".</p>
67 <p>Основные значения rel:</p>
67 <p>Основные значения rel:</p>
68 <ul><li>noopener - блокирует доступ новой вкладке к вашей странице. Это защита от потенциальных атак.</li>
68 <ul><li>noopener - блокирует доступ новой вкладке к вашей странице. Это защита от потенциальных атак.</li>
69 <li>noreferrer - скрывает адрес вашей страницы от сайта, на который ведёт ссылка.</li>
69 <li>noreferrer - скрывает адрес вашей страницы от сайта, на который ведёт ссылка.</li>
70 <li>nofollow - говорит поисковым системам не учитывать эту ссылку при ранжировании сайтов (например, если это реклама или внешний ресурс без доверия).</li>
70 <li>nofollow - говорит поисковым системам не учитывать эту ссылку при ранжировании сайтов (например, если это реклама или внешний ресурс без доверия).</li>
71 </ul><p>Пример безопасной ссылки:</p>
71 </ul><p>Пример безопасной ссылки:</p>
72 &lt;a href="https://skillbox.ru" target="_blank" rel="noopener noreferrer"&gt;Безопасная ссылка&lt;/a&gt;<p>Обычно ссылка отправляет пользователя на другую страницу. Но иногда нужно при клике вызвать какое-то действие прямо на той же странице. Например, показать сообщение, открыть всплывающее окно или раскрыть скрытый блок. Для этого можно привязать JavaScript к тегу &lt;a&gt;.</p>
72 &lt;a href="https://skillbox.ru" target="_blank" rel="noopener noreferrer"&gt;Безопасная ссылка&lt;/a&gt;<p>Обычно ссылка отправляет пользователя на другую страницу. Но иногда нужно при клике вызвать какое-то действие прямо на той же странице. Например, показать сообщение, открыть всплывающее окно или раскрыть скрытый блок. Для этого можно привязать JavaScript к тегу &lt;a&gt;.</p>
73 &lt;a href="#" onclick="alert('Привет, мир!'); return false;"&gt;Нажми на меня&lt;/a&gt;<ul><li>alert('Привет, мир!') - показывает всплывающее окно с текстом.</li>
73 &lt;a href="#" onclick="alert('Привет, мир!'); return false;"&gt;Нажми на меня&lt;/a&gt;<ul><li>alert('Привет, мир!') - показывает всплывающее окно с текстом.</li>
74 <li>return false - отменяет переход по ссылке, чтобы страница не прокручивалась вверх и не перезагружалась.</li>
74 <li>return false - отменяет переход по ссылке, чтобы страница не прокручивалась вверх и не перезагружалась.</li>
75 </ul><em>Скриншот: Google Chrome / Skillbox Media</em><p>Более современный способ - писать JavaScript отдельно от HTML. Для этого ссылке можно дать id, а обработку клика настроить через JavaScript:</p>
75 </ul><em>Скриншот: Google Chrome / Skillbox Media</em><p>Более современный способ - писать JavaScript отдельно от HTML. Для этого ссылке можно дать id, а обработку клика настроить через JavaScript:</p>
76 <p>В HTML даём ссылке идентификатор:</p>
76 <p>В HTML даём ссылке идентификатор:</p>
77 &lt;a href="#" id="showMessage"&gt;Кликни меня&lt;/a&gt;<p>Внизу страницы или в отдельном файле пишем JavaScript:</p>
77 &lt;a href="#" id="showMessage"&gt;Кликни меня&lt;/a&gt;<p>Внизу страницы или в отдельном файле пишем JavaScript:</p>
78 &lt;script&gt; const link = document.getElementById('showMessage'); link.addEventListener('click', function(event) { event.preventDefault(); // Отменяем переход по ссылке alert('Скрипт сработал!'); }); &lt;/script&gt;<p>Что здесь происходит:</p>
78 &lt;script&gt; const link = document.getElementById('showMessage'); link.addEventListener('click', function(event) { event.preventDefault(); // Отменяем переход по ссылке alert('Скрипт сработал!'); }); &lt;/script&gt;<p>Что здесь происходит:</p>
79 <ul><li>Мы находим ссылку по её id с помощью метода getElementById() и сохраняем её в переменную link. Теперь переменная link - это ссылка из HTML.</li>
79 <ul><li>Мы находим ссылку по её id с помощью метода getElementById() и сохраняем её в переменную link. Теперь переменная link - это ссылка из HTML.</li>
80 <li>К этой ссылке мы добавляем обработчик события click. Это значит: когда пользователь кликнет по ссылке, выполнится функция внутри addEventListener.</li>
80 <li>К этой ссылке мы добавляем обработчик события click. Это значит: когда пользователь кликнет по ссылке, выполнится функция внутри addEventListener.</li>
81 </ul><ul><li>По умолчанию у ссылки есть поведение - переход по адресу в href. Метод event.preventDefault() отменяет это поведение, чтобы страница не обновлялась и не прокручивалась вверх.</li>
81 </ul><ul><li>По умолчанию у ссылки есть поведение - переход по адресу в href. Метод event.preventDefault() отменяет это поведение, чтобы страница не обновлялась и не прокручивалась вверх.</li>
82 <li>Когда пользователь кликнет, сработает всплывающее сообщение (alert), которое покажет текст: "Скрипт сработал!"</li>
82 <li>Когда пользователь кликнет, сработает всплывающее сообщение (alert), которое покажет текст: "Скрипт сработал!"</li>
83 </ul><p>Такой подход лучше: HTML остаётся чистым, а вся логика содержится в JavaScript.</p>
83 </ul><p>Такой подход лучше: HTML остаётся чистым, а вся логика содержится в JavaScript.</p>
84 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Обычные ссылки в HTML выглядят одинаково: синие, подчёркнутые, а после клика - фиолетовые. Но с помощью CSS можно по-разному кастомизировать ссылку.</p>
84 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Обычные ссылки в HTML выглядят одинаково: синие, подчёркнутые, а после клика - фиолетовые. Но с помощью CSS можно по-разному кастомизировать ссылку.</p>
85 <p>Ссылка может быть не текстом, а картинкой:</p>
85 <p>Ссылка может быть не текстом, а картинкой:</p>
86 &lt;a href="https://skillbox.ru"&gt; &lt;img src="button.png" alt="Ссылка-картинка"/&gt; &lt;/a&gt;<p>Чтобы убрать стандартную тонкую рамку вокруг картинки, добавьте в CSS вот этот код:</p>
86 &lt;a href="https://skillbox.ru"&gt; &lt;img src="button.png" alt="Ссылка-картинка"/&gt; &lt;/a&gt;<p>Чтобы убрать стандартную тонкую рамку вокруг картинки, добавьте в CSS вот этот код:</p>
87 a img { outline: transparent; }<p>Результат будет таким:</p>
87 a img { outline: transparent; }<p>Результат будет таким:</p>
88 <em>Скриншот: Google Chrome / Skillbox Media</em><p>По умолчанию ссылка подчеркивается сплошной линией. Допустим, сплошное подчёркивание нам не нравится и мы хотим пунктирное. Это можно сделать в CSS, добавив значение свойству text-decoration:</p>
88 <em>Скриншот: Google Chrome / Skillbox Media</em><p>По умолчанию ссылка подчеркивается сплошной линией. Допустим, сплошное подчёркивание нам не нравится и мы хотим пунктирное. Это можно сделать в CSS, добавив значение свойству text-decoration:</p>
89 a { text-decoration: underline dotted; }<p>Теперь сплошное подчёркивание превратилось в пунктирное:</p>
89 a { text-decoration: underline dotted; }<p>Теперь сплошное подчёркивание превратилось в пунктирное:</p>
90 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Если пользователь уже переходил по ссылке, браузер меняет её цвет (обычно на фиолетовый). Чтобы настроить свой цвет для посещённых ссылок, используйте псевдокласс :visited:</p>
90 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Если пользователь уже переходил по ссылке, браузер меняет её цвет (обычно на фиолетовый). Чтобы настроить свой цвет для посещённых ссылок, используйте псевдокласс :visited:</p>
91 a:visited { color: green; }<p>Теперь после посещения ссылка будет подсвечиваться зелёным:</p>
91 a:visited { color: green; }<p>Теперь после посещения ссылка будет подсвечиваться зелёным:</p>
92 <em>Скриншот: Google Chrome / Skillbox Media</em><p>С помощью CSS можно сделать так, чтобы при наведении курсора ссылка меняла цвет не резко, как обычно, а плавно. Для этого используют свойство transition и псевдокласс :hover:</p>
92 <em>Скриншот: Google Chrome / Skillbox Media</em><p>С помощью CSS можно сделать так, чтобы при наведении курсора ссылка меняла цвет не резко, как обычно, а плавно. Для этого используют свойство transition и псевдокласс :hover:</p>
93 a { transition: color 0.3s ease; } a:hover { color: red; }<p>Теперь, когда пользователь наведёт курсор, текст плавно перекрасится в красный.</p>
93 a { transition: color 0.3s ease; } a:hover { color: red; }<p>Теперь, когда пользователь наведёт курсор, текст плавно перекрасится в красный.</p>
94 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Можно не только поменять цвет, но и добавить анимацию. Для этого применяют инструмент :hover и transform со значением scale:</p>
94 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Можно не только поменять цвет, но и добавить анимацию. Для этого применяют инструмент :hover и transform со значением scale:</p>
95 a { display: inline-block; transition: transform 0.2s ease; } a:hover { transform: scale(1.1); }<p>Ссылка увеличится в размерах, если навести на неё курсор:</p>
95 a { display: inline-block; transition: transform 0.2s ease; } a:hover { transform: scale(1.1); }<p>Ссылка увеличится в размерах, если навести на неё курсор:</p>
96 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Вот несколько типичных ситуаций, в которых &lt;a&gt; ведёт себя не так, как хотелось бы.</p>
96 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Вот несколько типичных ситуаций, в которых &lt;a&gt; ведёт себя не так, как хотелось бы.</p>
97 <p>Если вы забыли href, браузер покажет текст как обычный: ссылка не будет работать, курсор не поменяется.</p>
97 <p>Если вы забыли href, браузер покажет текст как обычный: ссылка не будет работать, курсор не поменяется.</p>
98 <p><strong>Неправильно:</strong></p>
98 <p><strong>Неправильно:</strong></p>
99 &lt;a&gt;https://skillbox.ru&lt;/a&gt;<p><strong>Правильно:</strong></p>
99 &lt;a&gt;https://skillbox.ru&lt;/a&gt;<p><strong>Правильно:</strong></p>
100 &lt;a href="https://skillbox.ru"&gt;https://skillbox.ru&lt;/a&gt;<p>Даже если ссылка ведёт в никуда и обрабатывается JavaScript, href всё равно нужен - хотя бы href="#" или href="javascript:void(0);".</p>
100 &lt;a href="https://skillbox.ru"&gt;https://skillbox.ru&lt;/a&gt;<p>Даже если ссылка ведёт в никуда и обрабатывается JavaScript, href всё равно нужен - хотя бы href="#" или href="javascript:void(0);".</p>
101 <p>Это частая ошибка при копировании и редактировании кода. Если забыть закрыть тег, браузер может оформить как ссылку всё, что идёт дальше.</p>
101 <p>Это частая ошибка при копировании и редактировании кода. Если забыть закрыть тег, браузер может оформить как ссылку всё, что идёт дальше.</p>
102 <p><strong>Неправильно:</strong></p>
102 <p><strong>Неправильно:</strong></p>
103 &lt;a href="https://skillbox.ru"&gt;Сайт Skillbox &lt;p&gt;Это абзац&lt;/p&gt;<p><strong>Правильно:</strong></p>
103 &lt;a href="https://skillbox.ru"&gt;Сайт Skillbox &lt;p&gt;Это абзац&lt;/p&gt;<p><strong>Правильно:</strong></p>
104 &lt;a href="https://skillbox.ru"&gt;Сайт Skillbox&lt;/a&gt; &lt;p&gt;Это абзац&lt;/p&gt;<p>Если вы используете якори, но забыли # или задали неправильный идентификатор, ссылка не сработает - браузер не сможет найти нужный элемент.</p>
104 &lt;a href="https://skillbox.ru"&gt;Сайт Skillbox&lt;/a&gt; &lt;p&gt;Это абзац&lt;/p&gt;<p>Если вы используете якори, но забыли # или задали неправильный идентификатор, ссылка не сработает - браузер не сможет найти нужный элемент.</p>
105 <p><strong>Неправильно:</strong></p>
105 <p><strong>Неправильно:</strong></p>
106 &lt;a href="about"&gt;Подробнее о разделе&lt;/a&gt;<p><strong>Правильно:</strong></p>
106 &lt;a href="about"&gt;Подробнее о разделе&lt;/a&gt;<p><strong>Правильно:</strong></p>
107 &lt;a href="#about"&gt;Подробнее о разделе&lt;/a&gt; &lt;!-- А где-то на странице должен быть элемент с id="about" --&gt; &lt;section id="about"&gt;...&lt;/section&gt;<p>Якорь всегда начинается с #, а сам идентификатор (id) должен быть уникальным на странице.</p>
107 &lt;a href="#about"&gt;Подробнее о разделе&lt;/a&gt; &lt;!-- А где-то на странице должен быть элемент с id="about" --&gt; &lt;section id="about"&gt;...&lt;/section&gt;<p>Якорь всегда начинается с #, а сам идентификатор (id) должен быть уникальным на странице.</p>
108 <p>Не вставляйте в адрес ссылки пробелы, русские буквы и специальные символы (например, &amp;, ?, #, =, ,) без кодирования.Если вам нужно вставить такой символ в href, он должен быть записан в виде кода. Например:</p>
108 <p>Не вставляйте в адрес ссылки пробелы, русские буквы и специальные символы (например, &amp;, ?, #, =, ,) без кодирования.Если вам нужно вставить такой символ в href, он должен быть записан в виде кода. Например:</p>
109 <ul><li>пробел → %20;</li>
109 <ul><li>пробел → %20;</li>
110 <li>&amp; → %26;</li>
110 <li>&amp; → %26;</li>
111 <li>кириллица автоматически преобразуется браузером, но вручную вставлять её не стоит - лучше использовать латиницу или URL-кодировку.</li>
111 <li>кириллица автоматически преобразуется браузером, но вручную вставлять её не стоит - лучше использовать латиницу или URL-кодировку.</li>
112 </ul><p><strong>Неправильно:</strong></p>
112 </ul><p><strong>Неправильно:</strong></p>
113 &lt;a href="https://example.com/файл с пробелом.html"&gt;Скачать&lt;/a&gt;<p><strong>Правильно:</strong></p>
113 &lt;a href="https://example.com/файл с пробелом.html"&gt;Скачать&lt;/a&gt;<p><strong>Правильно:</strong></p>
114 &lt;a href="https://example.com/%D1%84%D0%B0%D0%B9%D0%BB%20%D1%81%20%D0%BF%D1%80%D0%BE%D0%B1%D0%B5%D0%BB%D0%BE%D0%BC.html"&gt;Скачать&lt;/a&gt;<p>Но проще заранее переименовать файл, чтобы не было проблем:</p>
114 &lt;a href="https://example.com/%D1%84%D0%B0%D0%B9%D0%BB%20%D1%81%20%D0%BF%D1%80%D0%BE%D0%B1%D0%B5%D0%BB%D0%BE%D0%BC.html"&gt;Скачать&lt;/a&gt;<p>Но проще заранее переименовать файл, чтобы не было проблем:</p>
115 &lt;a href="https://example.com/file-name.html"&gt;Скачать&lt;/a&gt;<p>Ссылки из доменной зоны .рф и других зон с нелатинскими буквами технически работают, но внутри HTML и программного кода они должны быть записаны в специальной форме - punycode.</p>
115 &lt;a href="https://example.com/file-name.html"&gt;Скачать&lt;/a&gt;<p>Ссылки из доменной зоны .рф и других зон с нелатинскими буквами технически работают, но внутри HTML и программного кода они должны быть записаны в специальной форме - punycode.</p>
116 <p>В браузере вы можете спокойно написать:</p>
116 <p>В браузере вы можете спокойно написать:</p>
117 &lt;a href="https://пример.рф"&gt;Наш сайт&lt;/a&gt;<p>Но если вы вставите такую ссылку в код, то сервер, форма, скрипт или база данных могут не понять кириллицу. Поэтому её нужно привести к машинному формату.</p>
117 &lt;a href="https://пример.рф"&gt;Наш сайт&lt;/a&gt;<p>Но если вы вставите такую ссылку в код, то сервер, форма, скрипт или база данных могут не понять кириллицу. Поэтому её нужно привести к машинному формату.</p>
118 <p>Ссылка:</p>
118 <p>Ссылка:</p>
119 https://пример.рф<p>В коде она должна выглядеть вот так:</p>
119 https://пример.рф<p>В коде она должна выглядеть вот так:</p>
120 https://xn--e1afmkfd.xn--p1ai<p>Есть сайты, которые умеют преобразовывать ссылки, - например,<a>punycodeconverter.com</a>.</p>
120 https://xn--e1afmkfd.xn--p1ai<p>Есть сайты, которые умеют преобразовывать ссылки, - например,<a>punycodeconverter.com</a>.</p>
121 <a>Курс с трудоустройством: "Профессия Фронтенд-разработчик + ИИ" Узнать о курсе</a>
121 <a>Курс с трудоустройством: "Профессия Фронтенд-разработчик + ИИ" Узнать о курсе</a>