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, якоря, скачивание файлов и другие возможности тега < a >.</p>
4
</ul><p>Разбираем атрибуты href, target, rel, якоря, скачивание файлов и другие возможности тега < a >.</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6
<p>Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.</p>
6
<p>Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.</p>
7
<p>Тег <a> - основа навигации в HTML. С его помощью создаются ссылки, которые ведут на другие страницы, на разделы внутри сайта, на email, телефоны, файлы или даже запускают JavaScript. В этом руководстве мы покажем, как работает <a>, зачем нужен каждый его атрибут и какие ошибки чаще всего делают новички.</p>
7
<p>Тег <a> - основа навигации в HTML. С его помощью создаются ссылки, которые ведут на другие страницы, на разделы внутри сайта, на email, телефоны, файлы или даже запускают JavaScript. В этом руководстве мы покажем, как работает <a>, зачем нужен каждый его атрибут и какие ошибки чаще всего делают новички.</p>
8
<p><strong>Содержание</strong></p>
8
<p><strong>Содержание</strong></p>
9
<ul><li><a>Как работает тег <a></a></li>
9
<ul><li><a>Как работает тег <a></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>Стилизация тега <a> с помощью CSS</a></li>
15
<li><a>Стилизация тега <a> с помощью CSS</a></li>
16
<li><a>Типичные ошибки при работе с тегом <a></a></li>
16
<li><a>Типичные ошибки при работе с тегом <a></a></li>
17
</ul><p>Тег <a> (от anchor - "якорь") в HTML используется для создания ссылок. С его помощью можно направить пользователя на другую страницу, документ, email или даже начать звонок.</p>
17
</ul><p>Тег <a> (от anchor - "якорь") в HTML используется для создания ссылок. С его помощью можно направить пользователя на другую страницу, документ, email или даже начать звонок.</p>
18
<p>Это парный тег: у него есть открывающая и закрывающая часть - <a> и </a>. Между ними помещается текст, на который можно кликнуть.</p>
18
<p>Это парный тег: у него есть открывающая и закрывающая часть - <a> и </a>. Между ними помещается текст, на который можно кликнуть.</p>
19
<p>Вот самый простой пример:</p>
19
<p>Вот самый простой пример:</p>
20
<a href="https://skillbox.ru/">Официальный сайт Skillbox</a><p>В браузере это будет выглядеть как обычная синяя ссылка: <a><strong>Официальный сайт Skillbox</strong></a>. Если кликнуть на неё, откроется главная страница Skillbox.</p>
20
<a href="https://skillbox.ru/">Официальный сайт Skillbox</a><p>В браузере это будет выглядеть как обычная синяя ссылка: <a><strong>Официальный сайт Skillbox</strong></a>. Если кликнуть на неё, откроется главная страница Skillbox.</p>
21
<p>Чтобы ссылка заработала, тегу <a> нужен атрибут href. Он указывает, куда должен перейти пользователь после клика. Без href это просто оформленный текст, а не настоящая ссылка.</p>
21
<p>Чтобы ссылка заработала, тегу <a> нужен атрибут href. Он указывает, куда должен перейти пользователь после клика. Без href это просто оформленный текст, а не настоящая ссылка.</p>
22
<p>Атрибут href умеет работать с разными типами адресов - не только с веб-сайтами. Давайте разберём на примерах.</p>
22
<p>Атрибут href умеет работать с разными типами адресов - не только с веб-сайтами. Давайте разберём на примерах.</p>
23
<p>Самый привычный случай - ссылка на веб-страницу. Указываем адрес, и пользователь попадёт туда при клике:</p>
23
<p>Самый привычный случай - ссылка на веб-страницу. Указываем адрес, и пользователь попадёт туда при клике:</p>
24
<a href="https://skillbox.ru/">Официальный сайт Skillbox</a><p>Если вы хотите дать доступ к файлу через FTP-протокол, можно сделать так:</p>
24
<a href="https://skillbox.ru/">Официальный сайт Skillbox</a><p>Если вы хотите дать доступ к файлу через FTP-протокол, можно сделать так:</p>
25
<a href="ftp://example.com/file.zip">Скачать файл по FTP</a><p>Такой формат используется всё реже - в основном для внутренних систем.</p>
25
<a href="ftp://example.com/file.zip">Скачать файл по FTP</a><p>Такой формат используется всё реже - в основном для внутренних систем.</p>
26
<p>Можно создать ссылку на файл на вашем компьютере:</p>
26
<p>Можно создать ссылку на файл на вашем компьютере:</p>
27
<a href="file:///C:/Users/User/Documents/file.txt">Открыть локальный файл</a><p>Но это работает только у вас - с другого компьютера такую ссылку не откроешь. Такие ссылки обычно используют во время тестирования.</p>
27
<a href="file:///C:/Users/User/Documents/file.txt">Открыть локальный файл</a><p>Но это работает только у вас - с другого компьютера такую ссылку не откроешь. Такие ссылки обычно используют во время тестирования.</p>
28
<p>Иногда нужно сделать ссылку, которая никуда не ведёт. Например, вы ещё не решили, куда будет вести кнопка, или хотите просто отловить клик с помощью JavaScript.</p>
28
<p>Иногда нужно сделать ссылку, которая никуда не ведёт. Например, вы ещё не решили, куда будет вести кнопка, или хотите просто отловить клик с помощью JavaScript.</p>
29
<p>В таких случаях можно написать:</p>
29
<p>В таких случаях можно написать:</p>
30
<a href="#">Открыть эту же страницу</a> <a href="">Ещё вариант</a><p>При клике браузер либо остановится на месте, либо прокрутит страницу вверх. Это удобно, если вы хотите "поймать" клик с помощью JavaScript.</p>
30
<a href="#">Открыть эту же страницу</a> <a href="">Ещё вариант</a><p>При клике браузер либо остановится на месте, либо прокрутит страницу вверх. Это удобно, если вы хотите "поймать" клик с помощью JavaScript.</p>
31
<p>Если вы хотите не просто открыть файл, а предложить пользователю его скачать, используйте атрибут download:</p>
31
<p>Если вы хотите не просто открыть файл, а предложить пользователю его скачать, используйте атрибут download:</p>
32
<a href="https://site.com/file.pdf" download>Скачать PDF</a><p>Браузер предложит сохранить файл на компьютер, а не откроет его.</p>
32
<a href="https://site.com/file.pdf" download>Скачать PDF</a><p>Браузер предложит сохранить файл на компьютер, а не откроет его.</p>
33
<p>Можно сделать ссылку, при клике на которую откроется почтовый клиент с готовым адресом получателя:</p>
33
<p>Можно сделать ссылку, при клике на которую откроется почтовый клиент с готовым адресом получателя:</p>
34
<a href="mailto:hello@skillbox.ru">Написать в Skillbox</a><p>Это работает, если у пользователя установлен почтовый клиент (например, Outlook или Mail).</p>
34
<a href="mailto:hello@skillbox.ru">Написать в Skillbox</a><p>Это работает, если у пользователя установлен почтовый клиент (например, Outlook или Mail).</p>
35
<p>На мобильных устройствах удобно делать кликабельные номера:</p>
35
<p>На мобильных устройствах удобно делать кликабельные номера:</p>
36
<a href="tel:+78006007847">Позвонить нам</a><p>Когда человек нажмёт на такую ссылку, телефон сразу предложит набрать номер.</p>
36
<a href="tel:+78006007847">Позвонить нам</a><p>Когда человек нажмёт на такую ссылку, телефон сразу предложит набрать номер.</p>
37
<p>Якорные ссылки позволяют перемещаться по одной и той же странице. Представьте длинную статью - такую как эта. Вы хотите, чтобы читатель мог нажать на ссылку в разделе "Содержание" в начале и сразу перейти к нужному разделу. Вот тут и приходит на помощь якорь.</p>
37
<p>Якорные ссылки позволяют перемещаться по одной и той же странице. Представьте длинную статью - такую как эта. Вы хотите, чтобы читатель мог нажать на ссылку в разделе "Содержание" в начале и сразу перейти к нужному разделу. Вот тут и приходит на помощь якорь.</p>
38
<p>Это работает просто.</p>
38
<p>Это работает просто.</p>
39
<p>Назначаем имя блоку, в который хотим попасть. Для этого используем атрибут id:</p>
39
<p>Назначаем имя блоку, в который хотим попасть. Для этого используем атрибут id:</p>
40
<section id="about"> <h2>О нас</h2> <p>Этот раздел рассказывает о нашей команде.</p> </section><p>Создаём ссылку на этот id, добавляя href="#имя":</p>
40
<section id="about"> <h2>О нас</h2> <p>Этот раздел рассказывает о нашей команде.</p> </section><p>Создаём ссылку на этот id, добавляя href="#имя":</p>
41
<a href="#about">Перейти к разделу "О нас"</a><p>Теперь, когда пользователь нажмёт на ссылку, страница прокрутится к нужному блоку.</p>
41
<a href="#about">Перейти к разделу "О нас"</a><p>Теперь, когда пользователь нажмёт на ссылку, страница прокрутится к нужному блоку.</p>
42
<p>Можно сделать и обратный переход - например, кнопку "Наверх":</p>
42
<p>Можно сделать и обратный переход - например, кнопку "Наверх":</p>
43
<a href="#top">Вернуться к началу</a><p>Для этого где-то в начале страницы нужно поставить:</p>
43
<a href="#top">Вернуться к началу</a><p>Для этого где-то в начале страницы нужно поставить:</p>
44
<div id="top"></div><p>Помните, что имя якоря (id) на странице должно быть уникальным. Иначе браузер запутается и не поймёт, куда вести пользователя.</p>
44
<div id="top"></div><p>Помните, что имя якоря (id) на странице должно быть уникальным. Иначе браузер запутается и не поймёт, куда вести пользователя.</p>
45
<p>Кстати, переходы по якорям можно сделать не только с помощью ссылок <a>, но и с помощью кнопок или элементов меню. Например, если вы хотите, чтобы кнопка перенесла пользователя к нужному разделу страницы, можно написать так:</p>
45
<p>Кстати, переходы по якорям можно сделать не только с помощью ссылок <a>, но и с помощью кнопок или элементов меню. Например, если вы хотите, чтобы кнопка перенесла пользователя к нужному разделу страницы, можно написать так:</p>
46
<button onclick="location.href='#about'">Перейти к разделу "О нас"</button><p>При клике браузер выполнит переход к блоку с id="about", как если бы это была обычная ссылка.</p>
46
<button onclick="location.href='#about'">Перейти к разделу "О нас"</button><p>При клике браузер выполнит переход к блоку с id="about", как если бы это была обычная ссылка.</p>
47
<p>Атрибут target отвечает за то, где откроется ссылка, когда по ней кликнут: в той же вкладке, в новой или в отдельном окне.</p>
47
<p>Атрибут target отвечает за то, где откроется ссылка, когда по ней кликнут: в той же вкладке, в новой или в отдельном окне.</p>
48
<p>Это поведение по умолчанию. Если вы не укажете target вообще, ссылка откроется в той же вкладке, где вы находитесь.</p>
48
<p>Это поведение по умолчанию. Если вы не укажете target вообще, ссылка откроется в той же вкладке, где вы находитесь.</p>
49
<a href="https://skillbox.ru">Открыть в этой вкладке</a><p>Или:</p>
49
<a href="https://skillbox.ru">Открыть в этой вкладке</a><p>Или:</p>
50
<a href="https://skillbox.ru" target="_self">Открыть в этой вкладке</a><p>Если вы хотите, чтобы ссылка открывалась в новой вкладке браузера, используйте target="_blank":</p>
50
<a href="https://skillbox.ru" target="_self">Открыть в этой вкладке</a><p>Если вы хотите, чтобы ссылка открывалась в новой вкладке браузера, используйте target="_blank":</p>
51
<a href="https://google.ru" target="_blank">Открыть в новой вкладке</a><p>Используйте blank, если хотите, чтобы пользователь не потерял страницу. Например, если вы ведёте его на внешний сайт, а он ещё не дочитал вашу статью.</p>
51
<a href="https://google.ru" target="_blank">Открыть в новой вкладке</a><p>Используйте blank, если хотите, чтобы пользователь не потерял страницу. Например, если вы ведёте его на внешний сайт, а он ещё не дочитал вашу статью.</p>
52
<p>Представьте, что внутри вашей страницы есть небольшое "окошко": в нём загружается другая HTML-страница. Это и есть фрейм, а точнее, тег <iframe>. Он позволяет показывать один сайт внутри другого. Фреймы используют довольно редко - чаще <iframe> применяется для встраивания видео с YouTube, карт или блоков комментариев.</p>
52
<p>Представьте, что внутри вашей страницы есть небольшое "окошко": в нём загружается другая HTML-страница. Это и есть фрейм, а точнее, тег <iframe>. Он позволяет показывать один сайт внутри другого. Фреймы используют довольно редко - чаще <iframe> применяется для встраивания видео с 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
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Родительский документ</title> </head> <body> <h1>Родительский документ</h1> <p>Ниже находится встраиваемый фрейм (iframe), который загружает страницу <strong>inner.html</strong>:</p> <iframe src="inner.html" width="600" height="300"></iframe> </body> </html><p>Вложенная страница:</p>
60
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Родительский документ</title> </head> <body> <h1>Родительский документ</h1> <p>Ниже находится встраиваемый фрейм (iframe), который загружает страницу <strong>inner.html</strong>:</p> <iframe src="inner.html" width="600" height="300"></iframe> </body> </html><p>Вложенная страница:</p>
61
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Вложенная страница</title> </head> <body> <h2>Вложенная страница</h2> <p>Ниже приведены ссылки с разными значениями атрибута <code>target</code>:</p> <ul> <li> <strong>target="_self"</strong>: открывает ссылку в том же фрейме, где она расположена. <br> <a href="https://example.com" target="_self">Открыть в текущем iframe (_self)</a> </li> <li> <strong>target="_parent"</strong>: открывает ссылку в родительском документе, т. е. заменяет содержимое контейнера, в котором встроен iframe (в нашем случае это index.html). <br> <a href="https://example.com" target="_parent">Открыть в родительском документе (_parent)</a> </li> <li> <strong>target="_top"</strong>: открывает ссылку во всем окне браузера, убирая все фреймы. <br> <a href="https://example.com" target="_top">Открыть в верхнем окне (_top)</a> </li> </ul> <p>Попробуйте кликать по каждой ссылке и посмотрите, как меняется содержимое окна браузера.</p> </body> </html><p>В браузере это будет выглядеть вот так:</p>
61
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Вложенная страница</title> </head> <body> <h2>Вложенная страница</h2> <p>Ниже приведены ссылки с разными значениями атрибута <code>target</code>:</p> <ul> <li> <strong>target="_self"</strong>: открывает ссылку в том же фрейме, где она расположена. <br> <a href="https://example.com" target="_self">Открыть в текущем iframe (_self)</a> </li> <li> <strong>target="_parent"</strong>: открывает ссылку в родительском документе, т. е. заменяет содержимое контейнера, в котором встроен iframe (в нашем случае это index.html). <br> <a href="https://example.com" target="_parent">Открыть в родительском документе (_parent)</a> </li> <li> <strong>target="_top"</strong>: открывает ссылку во всем окне браузера, убирая все фреймы. <br> <a href="https://example.com" target="_top">Открыть в верхнем окне (_top)</a> </li> </ul> <p>Попробуйте кликать по каждой ссылке и посмотрите, как меняется содержимое окна браузера.</p> </body> </html><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
<a href="https://skillbox.ru" target="_blank" rel="noopener noreferrer">Безопасная ссылка</a><p>Обычно ссылка отправляет пользователя на другую страницу. Но иногда нужно при клике вызвать какое-то действие прямо на той же странице. Например, показать сообщение, открыть всплывающее окно или раскрыть скрытый блок. Для этого можно привязать JavaScript к тегу <a>.</p>
72
<a href="https://skillbox.ru" target="_blank" rel="noopener noreferrer">Безопасная ссылка</a><p>Обычно ссылка отправляет пользователя на другую страницу. Но иногда нужно при клике вызвать какое-то действие прямо на той же странице. Например, показать сообщение, открыть всплывающее окно или раскрыть скрытый блок. Для этого можно привязать JavaScript к тегу <a>.</p>
73
<a href="#" onclick="alert('Привет, мир!'); return false;">Нажми на меня</a><ul><li>alert('Привет, мир!') - показывает всплывающее окно с текстом.</li>
73
<a href="#" onclick="alert('Привет, мир!'); return false;">Нажми на меня</a><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
<a href="#" id="showMessage">Кликни меня</a><p>Внизу страницы или в отдельном файле пишем JavaScript:</p>
77
<a href="#" id="showMessage">Кликни меня</a><p>Внизу страницы или в отдельном файле пишем JavaScript:</p>
78
<script> const link = document.getElementById('showMessage'); link.addEventListener('click', function(event) { event.preventDefault(); // Отменяем переход по ссылке alert('Скрипт сработал!'); }); </script><p>Что здесь происходит:</p>
78
<script> const link = document.getElementById('showMessage'); link.addEventListener('click', function(event) { event.preventDefault(); // Отменяем переход по ссылке alert('Скрипт сработал!'); }); </script><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
<a href="https://skillbox.ru"> <img src="button.png" alt="Ссылка-картинка"/> </a><p>Чтобы убрать стандартную тонкую рамку вокруг картинки, добавьте в CSS вот этот код:</p>
86
<a href="https://skillbox.ru"> <img src="button.png" alt="Ссылка-картинка"/> </a><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>Вот несколько типичных ситуаций, в которых <a> ведёт себя не так, как хотелось бы.</p>
96
<em>Скриншот: Google Chrome / Skillbox Media</em><p>Вот несколько типичных ситуаций, в которых <a> ведёт себя не так, как хотелось бы.</p>
97
<p>Если вы забыли href, браузер покажет текст как обычный: ссылка не будет работать, курсор не поменяется.</p>
97
<p>Если вы забыли href, браузер покажет текст как обычный: ссылка не будет работать, курсор не поменяется.</p>
98
<p><strong>Неправильно:</strong></p>
98
<p><strong>Неправильно:</strong></p>
99
<a>https://skillbox.ru</a><p><strong>Правильно:</strong></p>
99
<a>https://skillbox.ru</a><p><strong>Правильно:</strong></p>
100
<a href="https://skillbox.ru">https://skillbox.ru</a><p>Даже если ссылка ведёт в никуда и обрабатывается JavaScript, href всё равно нужен - хотя бы href="#" или href="javascript:void(0);".</p>
100
<a href="https://skillbox.ru">https://skillbox.ru</a><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
<a href="https://skillbox.ru">Сайт Skillbox <p>Это абзац</p><p><strong>Правильно:</strong></p>
103
<a href="https://skillbox.ru">Сайт Skillbox <p>Это абзац</p><p><strong>Правильно:</strong></p>
104
<a href="https://skillbox.ru">Сайт Skillbox</a> <p>Это абзац</p><p>Если вы используете якори, но забыли # или задали неправильный идентификатор, ссылка не сработает - браузер не сможет найти нужный элемент.</p>
104
<a href="https://skillbox.ru">Сайт Skillbox</a> <p>Это абзац</p><p>Если вы используете якори, но забыли # или задали неправильный идентификатор, ссылка не сработает - браузер не сможет найти нужный элемент.</p>
105
<p><strong>Неправильно:</strong></p>
105
<p><strong>Неправильно:</strong></p>
106
<a href="about">Подробнее о разделе</a><p><strong>Правильно:</strong></p>
106
<a href="about">Подробнее о разделе</a><p><strong>Правильно:</strong></p>
107
<a href="#about">Подробнее о разделе</a> <!-- А где-то на странице должен быть элемент с id="about" --> <section id="about">...</section><p>Якорь всегда начинается с #, а сам идентификатор (id) должен быть уникальным на странице.</p>
107
<a href="#about">Подробнее о разделе</a> <!-- А где-то на странице должен быть элемент с id="about" --> <section id="about">...</section><p>Якорь всегда начинается с #, а сам идентификатор (id) должен быть уникальным на странице.</p>
108
<p>Не вставляйте в адрес ссылки пробелы, русские буквы и специальные символы (например, &, ?, #, =, ,) без кодирования.Если вам нужно вставить такой символ в href, он должен быть записан в виде кода. Например:</p>
108
<p>Не вставляйте в адрес ссылки пробелы, русские буквы и специальные символы (например, &, ?, #, =, ,) без кодирования.Если вам нужно вставить такой символ в href, он должен быть записан в виде кода. Например:</p>
109
<ul><li>пробел → %20;</li>
109
<ul><li>пробел → %20;</li>
110
<li>& → %26;</li>
110
<li>& → %26;</li>
111
<li>кириллица автоматически преобразуется браузером, но вручную вставлять её не стоит - лучше использовать латиницу или URL-кодировку.</li>
111
<li>кириллица автоматически преобразуется браузером, но вручную вставлять её не стоит - лучше использовать латиницу или URL-кодировку.</li>
112
</ul><p><strong>Неправильно:</strong></p>
112
</ul><p><strong>Неправильно:</strong></p>
113
<a href="https://example.com/файл с пробелом.html">Скачать</a><p><strong>Правильно:</strong></p>
113
<a href="https://example.com/файл с пробелом.html">Скачать</a><p><strong>Правильно:</strong></p>
114
<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">Скачать</a><p>Но проще заранее переименовать файл, чтобы не было проблем:</p>
114
<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">Скачать</a><p>Но проще заранее переименовать файл, чтобы не было проблем:</p>
115
<a href="https://example.com/file-name.html">Скачать</a><p>Ссылки из доменной зоны .рф и других зон с нелатинскими буквами технически работают, но внутри HTML и программного кода они должны быть записаны в специальной форме - punycode.</p>
115
<a href="https://example.com/file-name.html">Скачать</a><p>Ссылки из доменной зоны .рф и других зон с нелатинскими буквами технически работают, но внутри HTML и программного кода они должны быть записаны в специальной форме - punycode.</p>
116
<p>В браузере вы можете спокойно написать:</p>
116
<p>В браузере вы можете спокойно написать:</p>
117
<a href="https://пример.рф">Наш сайт</a><p>Но если вы вставите такую ссылку в код, то сервер, форма, скрипт или база данных могут не понять кириллицу. Поэтому её нужно привести к машинному формату.</p>
117
<a href="https://пример.рф">Наш сайт</a><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>