О гиперссылках:
Основное использование тегов привязки - <a></a>
- это гиперссылки . Это в основном означает, что они куда-то вас заберут. Для гиперссылок требуется свойство href
, поскольку оно указывает местоположение.
Hash:
Хеш - #
в гиперссылке указывает идентификатор элемента html, к которому следует прокручивать окно.
href="#some-id"
прокручивает до элемента на текущей странице, такого как <div id="some-id">
.
href="//site.com/#some-id"
перейдет на site.com
и выделит идентификатор на этой странице.
Прокрутить вверх:
href="#"
не указывает имя идентификатора, но имеет соответствующее местоположение - верхнюю часть страницы. Нажав на якорь с помощью href="#"
, вы переместитесь в положение прокрутки вверх.
См. Эту демонстрацию.
Это ожидаемое поведение согласно документации w3.
Заполнители гиперссылки:
Пример, где заполнитель гиперссылки имеет смысл, находится в предварительном просмотре шаблона. На одностраничных демонстрационных шаблонах я часто видел <a href="#">
, так что тег привязки является гиперссылкой, но никуда не денется. Почему бы не оставить свойство href
пустым? Пустое свойство href
на самом деле является гиперссылкой на текущую страницу. Другими словами, это приведет к обновлению страницы. Как я уже говорил, href="#"
также является гиперссылкой и вызывает прокрутку. Следовательно, лучшим решением для заполнителей гиперссылок на самом деле является href="#!"
Идея состоит в том, что, надеюсь, на странице нет элемента с id="!"
(кто это делает !?), и поэтому гиперссылка ни на что не ссылается - так что ничего не происходит .
О тегах привязки:
Другой вопрос, который может вас удивить: «Почему бы просто не оставить свойство href выключенным?». Обычно я слышал, что свойство href
является обязательным, поэтому оно должно присутствовать на якорях. Это ЛОЖЬ! Свойство href
требуется только для того, чтобы якорь действительно был гиперссылкой! Прочитайте это из w3 . Итак, почему бы просто не оставить это для заполнителей? Браузеры отображают стили по умолчанию для элементов и изменяют стиль по умолчанию для тега привязки, который не имеет свойства href. Вместо этого он будет рассматриваться как обычный текст. Это даже меняет поведение браузера относительно элемента. Строка состояния (внизу экрана) не будет отображаться при наведении курсора на якорь без свойства href. Лучше всего использовать значение метки-заполнителя для привязки, чтобы убедиться, что оно рассматривается как гиперссылка.
См. Эту демонстрацию , демонстрирующую различия в стиле и поведении.