Создание гиперссылок
====================

* Назад
* Обзор: Introduction to HTML
* Далее

Гиперссылки очень важны — именно они делают Интернет *сетью*. В этой статье представлен синтаксис, необходимый для создания ссылки, а также обсуждаются лучшие практики обращения со ссылками.

|  |  |
| --- | --- |
| Предварительные требования: | 
 Базовое знание HTML, описанное в разделе «Начало работы с HTML». Знакомство с форматированием текста, которое описано в разделе
 «Основы редактирования текста в HTML».
  |
| Задача: | Научиться эффективно использовать гиперссылки и связывать несколько файлов вместе. |

Что такое гиперссылка?
----------------------

Гиперссылки — одно из самых интересных нововведений Интернета. Они были особенностью Сети с самого начала, но именно они превращают Интернет в Интернет. Они позволяют нам связывать наши документы с любым другим документом (или ресурсом), с которым мы хотим. С их помощью мы также можем связывать документы с их конкретными частями, и мы можем сделать приложения доступными на простом веб-адресе (сравните это с локальными приложениями, которые должны быть установлены, и другими такими же вещами). Почти любой веб-контент может быть преобразован в ссылку, так что когда вы кликаете по ней (или иным образом активируете), она заставляет веб-браузер перейти на другой веб-адрес (URL).

**Примечание:** URL-адрес может указывать на файлы HTML, текстовые файлы, изображения, текстовые документы, видео и аудиофайлы и все остальное, что может жить в Интернете. Если веб-браузер не знает, как отображать или обрабатывать файл, он спросит вас, хотите ли вы открыть файл (в этом случае обязанность открытия или обработки файла передаётся в соответствующее локальное приложение на устройстве) или загрузить файл (в этом случае вы можете попытаться разобраться с ним позже).

Например, домашняя страница BBC содержит большое количество ссылок, которые указывают не только на множество новостей, но и на различные области сайта (меню), страницы входа / регистрации (пользовательские инструменты) и многое другое.

![Главная страница bbc.co.uk, показывающая множество новостей и функциональность меню навигации.](/ru/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks/updated-bbc-website.png)

Анатомия ссылки
---------------

Простая ссылка создаётся путём обёртывания текста (или другого содержимого, смотрите Ссылки-блоки), который вы хотите превратить в ссылку, в элемент `<a>`, и придания этому элементу атрибута `href` (который также известен как **гипертекстовая ссылка,** или **цель**), который будет содержать веб-адрес, на который вы хотите указать ссылку.


```html
<p>
  Я создал ссылку на
  <a href="https://www.mozilla.org/ru/">домашнюю страницу Mozilla</a>.
</p>
```


Это дало нам следующий результат:  
Я создал ссылку на домашнюю страницу Mozilla.

### Блочные ссылки

Как упоминалось ранее, вы можете превратить любой элемент в ссылку, даже блочный элемент. Если вы хотите превратить заголовок в ссылку, то оберните его в элемент (`<a>`):


```html
<a href="https://developer.mozilla.org/ru/">
  <h1>MDN Web Docs</h1>
</a>
<p>
  Документируем веб-технологии, включая CSS, HTML и JavaScript, с 2005 года.
</p>
```


 This turns the heading into a link:


### Добавляем информацию с помощью атрибута title

Другим атрибутом, который вы можете добавить к своим ссылкам, является — `title`. Он предназначен для хранения полезной информации о ссылке. Например, какую информацию содержит страница или другие вещи, о которых вам нужно знать. Например:


```html
<p>
  Я создал ссылку на
  <a
 href="https://www.mozilla.org/ru/"
 title="Лучшее место для поиска дополнительной информации
 о миссии Mozilla и о том, как внести свой вклад"
 >домашнюю страницу Mozilla </a
 >.
</p>
```


Вот что получилось (описание появится, если навести курсор на ссылку):

**Примечание:** Описание из атрибута title отображается только при наведении курсора, значит люди, полагающиеся на клавиатурные элементы управления для навигации по веб-страницам, будут испытывать трудности с доступом к информации, которую содержит title. Если информация заголовка действительно важна для удобства использования страницы, то вы должны представить её таким образом, который будет доступен для всех пользователей, например, поместив её в обычный текст.

### Активное изучение: создаём собственную ссылку

Время упражнения: мы хотели бы, чтобы вы создали любой HTML-документ в текстовом редакторе на своём компьютере (наш базовый пример подойдёт.)

* Попробуйте добавить в тело HTML один или несколько абзацев или другие элементы, о которых вы уже знаете.
* Теперь превратите некоторые фрагменты документа в ссылки.
* Добавьте ссылкам атрибут `title`.
Краткое руководство по URL-адресам и путям
------------------------------------------

Чтобы полностью понять адреса ссылок, вам нужно понять несколько вещей про URL-адреса и пути к файлам. Этот раздел даст вам информацию, необходимую для достижения этой цели.

URL-адрес (Uniform Resource Locator, или единый указатель ресурса, но так его никто не называет) — это просто строка текста, которая определяет, где что-то находится в Интернете. Например, домашняя страница Mozilla находится по адресу `https://www.mozilla.org/ru/`.

URL-адреса используют пути для поиска файлов. Пути указывают, где в файловой системе находится файл, который вас интересует. Давайте рассмотрим простой пример структуры каталогов (смотрите каталог creating-hyperlinks.)

![A simple directory structure. The parent directory is called creating-hyperlinks and contains two files called index.html and contacts.html, and two directories called projects and pdfs, which contain an index.html and a project-brief.pdf file, respectively](/ru/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks/simple-directory.png)

**Корень** структуры — каталог `creating-hyperlinks`. При работе на локальном веб-сайте у вас будет один каталог, в который входит весь сайт. В корне у нас есть два файла — `index.html` и `contacts.html`. На настоящем веб-сайте `index.html` был бы нашей домашней, или лендинг-страницей (веб-страницей, которая служит точкой входа для веб-сайта или определённого раздела веб-сайта).

В корне есть ещё два каталога — `pdfs` и `projects`. У каждого из них есть один файл внутри — `project-brief.pdf` и `index.html`, соответственно. Обратите внимание на то, что вы можете довольно успешно иметь два `index.html` файла в одном проекте, пока они находятся в разных местах файловой системы. Многие веб-сайты так делают. Второй `index.html`, возможно, будет главной лендинг-страницей для связанной с проектом информации.

* **Тот же каталог**: Если вы хотите подключить ссылку внутри `index.html` (верхний уровень `index.html`), указывающую на `contacts.html`, вам просто нужно указать имя файла, на который вы хотите установить ссылку, так как он находится в том же каталоге, что и текущий файл. Таким образом, URL-адрес, который вы используете — `contacts.html`:

```html
<p>
  Хотите связаться с конкретным сотрудником? Найдите подробную информацию на
  нашей <a href="contacts.html">странице контактов</a>.
</p>
```

* **Перемещение вниз в подкаталоги**: Если вы хотите подключить ссылку внутри `index.html` (верхний уровень `index.html`), указывающую на `projects/index.html`, вам нужно спуститься ниже в директории `projects` перед тем, как указать файл, который вы хотите. Это делается путём указания имени каталога, после которого идёт слеш и затем имя файла. Итак, URL-адрес, который вы используете - `projects/index.html`:

```html
<p>
  Посетите мою <a href="projects/index.html">домашнюю страницу проекта</a>.
</p>
```

* **Перемещение обратно в родительские каталоги**: Если вы хотите подключить ссылку внутри `projects/index.html`, указывающую на `pdfs/project-brief.pdf`, вам нужно будет подняться на уровень каталога, затем спустится в каталог `pdf`. "Подняться вверх на уровень каталога" обозначается двумя точками — `..` — так, URL-адрес, который вы используете `../pdfs/project-brief.pdf`:

```html
<p>
  Ссылка на
  <a href="../pdfs/project-brief.pdf">краткое описание моего проекта</a>.
</p>
```


**Примечание:** вы можете объединить несколько экземпляров этих функций в сложные URL-адреса, если необходимо, например:
 `../../../сложный/путь/к/моему/файлу.html`.


### Фрагменты документа

Можно ссылаться на определённую часть документа HTML (известную как **фрагмент документа**), а не только на верхнюю часть документа. Для этого вам сначала нужно назначить атрибут `id` элементу, с которым вы хотите связаться. Обычно имеет смысл ссылаться на определённый заголовок, поэтому это выглядит примерно так:


```html
<h2 id="Почтовый\_адрес">Почтовый адрес</h2>
```


Затем, чтобы связаться с этим конкретным `id`, вы должны включить его в конец URL-адреса, которому предшествует знак решётки, например:


```html
<p>
  Хотите написать мне письмо? Используйте наш
  <a href="contacts.html#Почтовый\_адрес">почтовый адрес</a>.
</p>
```


Вы даже можете использовать ссылку на фрагмент документа отдельно для ссылки на *другую часть того же документа*:


```html
<p>
  <a href="#Почтовый\_адрес">Почтовый адрес компании</a>
  можно найти в нижней части этой страницы.
</p>
```

### Абсолютные и относительные URL-адреса

Два понятия, с которыми вы столкнётесь в Интернете, — это **абсолютный URL** и **относительный URL**:

**Абсолютный URL**

Указывает на местоположение, определяемое его абсолютным местоположением в Интернете, включая протокол и доменное имя. Например, если страница `index.html` загружается в каталог, называемый `projects`, который находится внутри корня веб-сервера, а домен веб-сайта — `http://www.example.com`, страница будет доступна по адресу `http://www.example.com/projects/index.html` (или даже просто `http://www.example.com/projects/`), так как большинство веб-серверов просто ищет целевую страницу, такую как `index.html`, для загрузки, если он не указан в URL-адресе.).

*Абсолютный URL* всегда будет указывать на одно и то же местоположение, независимо от того, где он используется.

**Относительный URL**

Указывает расположение *относительно* файла, с которого вы связываетесь, это больше похоже на случай, который мы рассматривали в предыдущей секции. Для примера, если мы хотим указать со страницы `http://www.example.com/projects/index.html` на PDF файл, находящийся в той же директории, наш URL может быть просто названием файла — `project-brief.pdf` — никакой дополнительной информации не требуется. Если PDF расположен в поддиректории `pdfs` внутри каталога `projects`, относительная ссылка будет `pdfs/project-brief.pdf` (аналогичный абсолютный URL был бы `http://www.example.com/projects/pdfs/project-brief.pdf`.).

*Относительный URL* будет указывать на различные места, в зависимости от того, где находится файл, в котором он используется, — например, если мы переместим наш файл `index.html` из каталога `projects` в корневой каталог веб-сервера (верхний уровень, не в директорию) , то относительный URL `pdfs/project-brief.pdf` будет вести на `http://www.example.com/pdfs/project-brief.pdf`, а не на `http://www.example.com/projects/pdfs/project-brief.pdf`.

Советуем вам основательно разобраться в этой теме!

Практика написания хороших ссылок
---------------------------------

При написании ссылок рекомендуется следовать некоторым правилам. Давайте рассмотрим их.

### Используйте чёткие формулировки описания ссылок

На вашей странице легко добавить ссылки. Но этого не совсем достаточно. Мы должны сделать наши ссылки *доступными* для всех читателей, независимо от их возможностей и инструментов просмотра страницы, которые они предпочитают. Например:

* Пользователям программ читающих с экрана нравится переходить по ссылкам на странице, читая адрес ссылки в тексте.
* Поисковые системы используют текст ссылки для индексирования файлов, поэтому рекомендуется включать ключевые слова в текст ссылки, чтобы эффективно описывать, куда ведёт ссылка.
* Пользователи часто бегло просматривают страницу, не читая каждое слово, и их глаза будут привлечены к тексту, который выделяется, например, ссылки. Им будет полезно описание того, куда ведёт ссылка.

Взгляните на этот пример:

***Хороший** текст ссылки:* Скачать Firefox


```html
<p><a href="https://firefox.com/"> Скачать Firefox </a></p>
```


***Плохой** текст ссылки:* Нажми сюда, чтобы скачать Firefox


```html
<p><a href="https://firefox.com/"> Нажми сюда </a> чтобы скачать Firefox</p>
```


Советы:

* Не пишите URL-адрес как часть текста ссылки. URL-адреса выглядят сложными, а звучат ещё сложнее, когда программы чтения с экрана читают их по буквам.
* Не пишите «ссылка» или «ссылки на» в тексте ссылки — это лишнее. Программы чтения с экрана сами проговаривают, что есть ссылка. На экране пользователи также видят, что есть ссылка, потому что ссылки, как правило, оформлены в другом цвете и подчёркнуты (подчёркивая ссылки, вы соблюдаете правила хорошего тона, поскольку пользователи привыкли к этому).
* Следите за тем, чтобы текст ссылки был как можно короче. Длинный текст ссылки особенно раздражает пользователей программ чтения с экрана, которым придётся услышать всё, что написано.
* Минимизируйте случаи, когда несколько копий одного и того же текста ссылок указывает на разные страницы. Это может вызвать проблемы для пользователей программ чтения с экрана, которые часто вызывают список ссылок — несколько ссылок, помеченных как «нажмите здесь», «нажмите здесь», «нажмите здесь», будут путать.
### Используйте относительные ссылки, где это возможно

Из прочитанного выше, вы можете подумать, что всё время использовать абсолютные ссылки — хорошая идея; в конце концов, они не ломаются, когда страница перемещается. Тем не менее, лучше использовать относительные ссылки везде, где это возможно, в пределах *одного сайта* (при ссылке на *другие сайты* необходимо использовать абсолютную ссылку):

* Во-первых, гораздо проще прописать в коде относительные URL-адреса, как правило, они намного короче абсолютных URL-адресов, что значительно упрощает чтение кода
* Во-вторых, использование относительных URL-адресов эффективней по следующей причине. Когда вы используете абсолютный URL-адрес, браузер начинает поиск реального местоположения сервера запрашивая адрес у Domain Name System (DNS; также прочтите Как работает web), затем он переходит на этот сервер и находит файл, который запрашивается. С относительным URL-адресом проще: браузер просто ищет файл, который запрашивается на том же сервере. Используя абсолютные URL-адреса вместо относительных, вы постоянно нагружаете свой браузер дополнительной работой.
### Создавая ссылки на не HTML ресурсы — добавляйте описание

Когда вы создаёте ссылку на файл, нажав на который можно загрузить документ PDF или Word или открыть просмотр видео, прослушивание аудио файла или перейти на страницу с другим, неожиданным для пользователя результатом (всплывающее окно или загрузка Flash-фильма), добавляйте чёткую формулировку, чтобы уменьшить путаницу. Отсутствие описания может раздражать пользователя. Приведём пример:

* Если вы используете соединение с низкой пропускной способностью и вдруг нажмёте на ссылку без описания, начнётся загрузка большого файла.
* Если у вас нет установленного Flash-плеера и вы нажмёте ссылку, то внезапно перейдёте на страницу с Flash-контентом.

Посмотрите на примеры, чтобы увидеть, как добавить описание:


```html
<p>
  <a href="http://www.example.com/large-report.pdf">
    Скачать отчёт о продажах (PDF, 10MB)
  </a>
</p>

<p>
  <a href="http://www.example.com/video-stream/">
    Посмотреть видео (видео откроется в отдельном окне, HD качество)
  </a>
</p>

<p>
  <a href="http://www.example.com/car-game">
    Играть в гонки (необходим Flash)
  </a>
</p>
```

### Используйте атрибут download, когда создаёте ссылку

Когда создаёте ссылку на файл, который должен быть загружен, а не открыт в браузере, можете использовать атрибут `download`, чтобы создать имя файла по умолчанию для сохранения . Приведём пример ссылки для загрузки браузера Firefox 39:


```html
<a
 href="https://download.mozilla.org/?product=firefox-39.0-SSL&os=win&lang=en-US"
 download="firefox-39-installer.exe">
  Скачать Firefox 39 для Windows
</a>
```

Активное изучение: создание меню навигации
------------------------------------------

Для этого упражнения мы хотим, чтобы вы создали ссылки на страницы в меню навигации в многостраничном сайте. Это один из распространённых способов создания сайта: на каждой странице используется одна и та же структура страниц, включая одно и то же меню навигации, поэтому при нажатии ссылок создаётся впечатление, что вы остаётесь в одном месте: меню остаётся на месте, а контент меняется.

Вам нужно скачать или создать следующие страницы в одном каталоге (Смотрите navigation-menu-start):

* index.html
* projects.html
* pictures.html
* social.html

Что делать:

1. Добавьте неупорядоченный список в указанном месте в любом html-файле. Список должен состоять из имён страниц (index, projects и т.д.). Меню навигации обычно представляет собой список ссылок, поэтому создание неупорядоченного списка семантически верно.
2. Создайте ссылки каждому элементу списка, ведущие на эти страницы.
3. Скопируйте созданное меню в каждую страницу.
4. На каждой странице удалите только ссылку, которая указывает на эту же страницу (на странице index.html удалить ссылку index и так далее). Дело в том, что, находясь на странице index.html, нам незачем видеть ссылку в меню на эту же страницу. С одной стороны, нам незачем ещё раз переходить на эту же страницу, с другой, такой приём помогает визуально определить, смотря на меню, в какой части сайта мы находимся.

Когда закончите задание, посмотрите, как это должно выглядеть:

![An example of a simple HTML navigation menu, with home, pictures, projects, and social menu items](/ru/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks/navigation-example.png)

**Примечание:** Если не удаётся сделать, или вы не уверены, что сделали верно, посмотрите наш вариант navigation-menu-marked-up.

Ссылки электронной почты
------------------------

Можно создавать ссылки или кнопки, которые при нажатии открывают новое исходящее сообщение электронной почты, а не ссылку на ресурс или страницу. Для этого используется элемент `<a>` и `mailto:` — *адрес почты*.

Самыми простыми и часто используемыми формами `mailto:` являются *subject*, *cc*, *bcc* и *body*; дальше прописываем адрес электронной почты. Например:


```html
<a href="mailto:nowhere@mozilla.org">Отправить письмо для nowhere</a>
```


В результате получим ссылку вида: Отправить письмо для nowhere.

Сам адрес электронной почты не является обязательным для заполнения. Если оставить это поле пустым (в поле `href` оставить только "mailto:"), откроется новое исходящее сообщение почтовой программой, в поле получателя будет пусто. Это можно использовать для кнопки "Поделиться".

### Особенности и детали

Помимо адреса электронной почты, вы можете предоставить другую информацию. Фактически, любые стандартные поля для отправки почты могут быть добавлены к указанному вами адресу `mailto`. Часто используемыми из них являются «subject», «cc» и «body» (которые не являются истинным полем заголовка, но позволяют указать дополнительную информацию для нового сообщения электронной почты). Каждое поле и его значение задаются в качестве условия запроса.

Вот пример который включает cc(кому отправить копию сообщения, все получатели письма видят список тех кто это письмо получит), bcc(скрытый адрес получателя, никто из получателей не будет видеть полный список получателей письма), subject(тема письма) и body(текст сообщения):


```html
<a
 href="mailto:nowhere@mozilla.org?cc=name2@rapidtables.com&bcc=name3@rapidtables.com&amp;subject=The%20subject%20of%20the%20email &amp;body=The%20body%20of%20the%20email">
  Send mail with cc, bcc, subject and body
</a>
```


**Примечание:** Значение каждого поля должно быть написано в URL-кодировке (то есть с непечатаемыми символами и пробелами percent-escaped). Обратите внимание на знак вопроса (?) для разделения основного адреса и дополнительных полей, амперсанд (&) для разделения каждого поля `mailto:` URL. Для этого используется стандартное описание URL запроса. Прочтите о методе GET, чтобы лучше понимать описание URL запроса.

Вот несколько примеров использования `mailto` URLs:

* mailto:
* mailto:nowhere@mozilla.org
* mailto:nowhere@mozilla.org,nobody@mozilla.org
* mailto:nowhere@mozilla.org?cc=nobody@mozilla.org
* mailto:nowhere@mozilla.org?cc=nobody@mozilla.org&subject=This%20is%20the%20subject
Заключение
----------

Этой информации достаточно для создания ссылок! Вы вернётесь к ссылкам позже, когда начнёте изучать стили. Дальше вы рассмотрите семантику текста и более сложные и необычные возможности, которые будут полезны при создании контента сайта. В следующей главе будет рассматриваться продвинутое форматирование текста.

* Назад
* Обзор: Introduction to HTML
* Далее