Ответ 1
<a>
обозначает якорь
Если вы включаете атрибут [href]
в элемент <a>
, это привязка указывает на местоположение, что означает, что вы можете перейти на новую страницу, конкретный фрагмент текущей страницы (следовательно, #
, называемый идентификатором фрагмента) или конкретный фрагмент новой страницы.
<a>
Элементы без атрибута [href]
исторически были присвоены атрибут [name]
, который можно было бы использовать в качестве адресата идентификатора фрагмента. Браузеры позже добавили поддержку для привязки к любому атрибуту [id]
, и теперь это предпочтительный метод для связывания с фрагментом документа.
Что это значит для автономных элементов <a>
?
Элемент a[href]
- это ссылка (поэтому они сопоставляются с :link
в css). ссылки доступны. Элемент a
без атрибута [href]
в противном случае является просто заполнителем, для которого ссылка могла бы быть размещена, а не кликабельна, находятся ли они в порядке табуляции страницы.
Если вы хотите, чтобы ваши ссылки были навигационными с клавиатуры, что важно для доступности (WAI-ARIA), вам нужно будет сделать один из следующее:
- измените элемент на
<button type="button">
- сохранить атрибут
[href]
- добавить
[tabindex="0"]
и один из[role="button"]
или[role="link"]
(и, возможно, некоторый стиль)
Более подробную информацию об атрибуте [role]
можно найти в разделе модели ролей Документы WAI-ARIA.
Изменение разметки
Если у вас нет причины сохранять атрибут [href]
, вы также можете использовать элемент <button>
:
<button type="button">
^^^^^^^^^^^^^
Атрибут [type]
используется для того, чтобы сделать элемент общей кнопкой, иначе <button>
по умолчанию будет [type="submit"]
, что может быть нежелательно, поскольку оно может инициировать отправку формы.
Если вы не можете использовать <button>
(обычно это происходит, когда внутренняя разметка должна содержать <div>
), вы можете подделать <button>
, используя:
<div role="button" tabindex="0">Some clickable text</div>
Вам нужно будет прослушать события keypress
и вызвать события click
для Enter и Space.
Сохранение разметки
Если вы сохраняете элемент <a>
и его атрибут [href]
, для его значения существует несколько параметров.
Реальная ссылка
E.x.
-
<a href="/some/location/for/users/without/js">
-
<a href="#document-fragment">
Если вам необходимо предоставить поддержку пользователям с отключенным JS, вы можете также направить их на страницу, которая выполняет эквивалентную функциональность без JS.
В дополнение, это также включает в себя предоставление ссылок на фрагменты документа для ссылки на контент в том же документе. Например, отображаемая область может быть отмечена как:
<a href="#more" class="toggleable">Read More</a>
<div id="more">Lorem ipsum dolor sit amet</div>
Таким образом, с JS область может быть свернута и расширена, и без JS ссылка приведет пользователя к соответствующему контенту на странице.
A dud href
E.x.
-
<a href="#">
-
<a href="javascript:void(0)">
-
<a href="about:blank">
Если вы запрещаете поведение по умолчанию за кадром в JavaScript и не поддерживаете пользователей с отключенным JS, вы можете использовать значение "dud" href, чтобы сохранить ссылку в порядке табуляции и автоматически включить Enter для запуска события click
. Вы должны добавить [role="button"]
как семантически, тэг <a>
больше не используется как ссылка, а как кнопка.
<a href="#" role="button">Some clickable text</a>