На многих сайтах я вижу ссылки, которые есть href="#"
. Что это значит? Для чего его используют?
Основное использование якорных тегов <a></a>
- это как гиперссылки . Это в основном означает, что они куда-то вас заберут. Гиперссылки требуют href
свойство, поскольку оно указывает местоположение.
Хеш - #
внутри гиперссылки указывает идентификатор элемента html, к которому следует прокручивать окно.
href="#some-id"
будет прокручивать до элемента на текущей странице, например <div id="some-id">
.
href="https://site.com/#some-id"
будет идти site.com
и прокрутить до идентификатора на этой странице.
href="#"
не указывает имя идентификатора, но имеет соответствующее местоположение - верхнюю часть страницы. Нажав на якорь, href="#"
вы переместитесь в положение прокрутки вверх.
Это ожидаемое поведение в соответствии с документацией w3.
Пример, где заполнитель гиперссылки имеет смысл, находится в предварительном просмотре шаблона. На одностраничных демонстрационных шаблонах я часто видел, <a href="#">
что тег привязки является гиперссылкой, но никуда не денется. Почему бы не оставить href
имущество пустым? Пустое href
свойство на самом деле является гиперссылкой на текущую страницу. Другими словами, это приведет к обновлению страницы. Как я уже говорил, href="#"
это тоже гиперссылка, и вызывает прокрутку. Следовательно, на самом деле лучшее решение для заполнителей гиперссылок заключается в href="#!"
том, что идея состоит в том, что, надеюсь, на странице нет элемента с id="!"
(который это делает !?), и поэтому гиперссылка ни на что не ссылается - так что ничего не происходит.
Другой вопрос, который может вас заинтересовать: «Почему бы просто не оставить свойство href выключенным?». Обычно я слышал, что href
свойство является обязательным, поэтому оно должно присутствовать на якорях. Это ЛОЖЬ! href
Свойство требуется только для якоря на самом деле быть гиперссылкой! Прочитайте это от w3, Итак, почему бы просто не оставить это для заполнителей? Браузеры отображают стили по умолчанию для элементов и изменяют стиль по умолчанию для тега привязки, который не имеет свойства href. Вместо этого он будет рассматриваться как обычный текст. Это даже меняет поведение браузера относительно элемента. Строка состояния (внизу экрана) не будет отображаться при наведении курсора на якорь без свойства href. Лучше всего использовать значение метки-заполнителя для привязки, чтобы гарантировать, что оно рассматривается как гиперссылка.
Посмотрите эту демонстрацию, демонстрирующую различия в стиле и поведении.
.click()
метод jQuery для a<div></div>
, он не будет работать. Либо должен быть на якоре, либо вы должны использоватьtouch
события.Если поставить символ «#» в качестве ссылки для чего-либо, это означает, что оно указывает не на другой URL, а на другой идентификатор или тег имени на той же странице. Например:
Тем не менее, если нет идентификатора или имени, то оно идет "не где".
Вот еще один похожий вопрос, который задавали якорям HTML с «name» или «id»?
источник
<a href="#">...</a>
не "никуда" уходил со страницы и загружалсяsite.com/#
. Как это возможно?onclick
связано с тем, что к этому элементу был привязан обработчик событий, в результате чего была вызвана функция javascript, которая перенаправила вас на эту страницу.Это ссылка, которая по сути ссылается на никуда (она просто добавляет «#» в URL). Он используется по ряду разных причин. Например, если вы используете какой-то JavaScript / jQuery и не хотите, чтобы фактический HTML-код ссылался где-либо.
Он также используется для привязки страниц, который используется для перенаправления на другую часть страницы.
источник
К сожалению, чаще всего используются
<a href="#">
ленивые программисты, которым нужны кликабельные не гиперссылочные элементы в кодировке javascript, которые ведут себя как якоря, но их нельзя добавитьcursor: pointer;
или добавить:hover
в класс для своих элементов без гиперссылок, и они дополнительно слишком ленив , чтобы установитьhref
вjavascript:void(0);
.Проблема в том, что тот
<a href="#" onclick="some_function();">
или иной неизбежно заканчивается ошибкой javascript, а привязка с ошибкой javascript onclick всегда заканчивается следующейhref
. Обычно это заканчивается тем , что раздражает скачок в верхней части страницы, но в случае с использованием сайтов<base>
,<a href="#">
обрабатывается как<a href="[base href]/#">
, что приводит к неожиданному навигации. Если генерируются какие-либо регистрируемые ошибки, вы не увидите их в последнем случае, если не включите постоянные журналы.Если якорь элемент будет использован в качестве не корной она должна иметь свой
href
набор , чтобыjavascript:void(0);
ради изящной деградации.Я просто потратил два дня на отладку случайного непредвиденного перенаправления страницы, которое должно было просто обновить страницу, и, наконец, отследил ее до функции, вызывающей событие click для
<a href="#">
. Замена#
сjavascript:void(0);
фиксированным его.Первое, что я делаю в понедельник, это очищаю проект от всех случаев
<a href="#">
.источник
<base>
действительно иметь большое значение для#
. Спасибо за указание!Неупорядоченные списки часто создаются с целью использования их в качестве меню, но
li
элемент списка является текстовым. Посколькуli
элемент списка является текстом, указатель мыши будет не стрелкой, а «курсором I». Пользователи привыкли видеть указательный палец для указателя мыши, когда что-то нажимается. Использование тега привязкиa
внутриli
тега приводит к изменению указателя мыши на указательный палец. Указательный палец намного удобнее использовать в качестве меню.Если список используется для меню и ему не нужна ссылка, то URL-адрес не нужно указывать. Но проблема в том, что если вы пропустите
href
атрибут, текст в<a>
теге будет виден как текст, и, следовательно, указатель мыши вернется к I-курсору. I-курсор может заставить пользователя думать, что пункт меню не активен. Таким образом, вам все еще нужноhref
, но вам не нужна ссылка никуда.Вы можете использовать множество
div
илиp
теги для списка меню, но указатель мыши для них также будет I-курсором.Вы можете использовать множество кнопок, расположенных друг над другом, для списка меню, но этот список кажется предпочтительным. И, вероятно, именно поэтому
href="#"
указатель на нигде используется в тегах привязки внутри тегов списка.Вы можете установить стиль указателя в CSS, так что это еще один вариант.
href="#"
В никуда может быть просто ленивый способ установить некоторые стили.источник
Проблема с использованием href = "#" для пустой ссылки заключается в том, что она приведет вас к началу страницы, что может быть нежелательным действием. Чтобы избежать этого, в старых браузерах или не-HTML5 типах документов используйте
источник
Насколько я знаю, это обычно заполнитель для ссылок, к которым прикреплен JavaScript. Основным пунктом ссылки является выполнение кода JavaScript; браузеры с поддержкой JS игнорируют реальную цель ссылки. Если браузер не поддерживает JS, хеш-метка по существу превращает ссылку в запретную операцию. Смотрите также ненавязчивый JavaScript .
источник
Как указывалось в некоторых других ответах,
a
элемент требуетhref
атрибута и#
используется в качестве заполнителя, но это также исторический артефакт.Из Сети разработчиков Mozilla :
Кроме того, согласно спецификации HTML5 :
источник
Атрибут href определяет URL ресурса ссылки. Если тег привязки не имеет тега href, он не станет гиперссылкой. Атрибут href имеет следующие значения:
источник