Если кто-то хочет обратиться к какой-либо части веб-страницы с помощью http://example.com/#foo
метода " ", следует ли использовать
<h1><a name="foo"/>Foo Title</h1>
или
<h1 id="foo">Foo Title</h1>
Они оба работают, но равны ли они или имеют семантические различия?
html
hyperlink
fragment-identifier
Хенрик Пол
источник
источник
http://example.com#foo
(поэтому без / перед #)http://example.com#foo
иhttp://example.com/#foo
эквивалентны, как определено в одном из RFC на URI.Ответы:
Согласно спецификации HTML 5, 5.9.8 Переход к идентификатору фрагмента :
Итак, он будет искать
id="foo"
, а затем будет следоватьname="foo"
Редактировать: как указано @hsivonen, в HTML5
a
элемент не имеет атрибута имени. Однако вышеприведенные правила все еще применяются к другим именованным элементам.источник
<h1 id="foo">Foo Title</h1>
работает даже в IE6 и является частью спецификации HTML 4.01name="foo"
и aid="foo"
(независимо от их порядка на странице) Chrome и Firefox будут переходить кid
, но IE (тестирование в 11) и Edge будут переходить кname
Вы не должны использовать
<h1><a name="foo"/>Foo Title</h1>
какой-либо другой вариант HTMLtext/html
, поскольку синтаксис пустого элемента XML не поддерживается вtext/html
. Тем не менее,<h1><a name="foo">Foo Title</a></h1>
это нормально в HTML4. Он недействителен в HTML5 в том виде, в котором он написан<h1 id="foo">Foo Title</h1>
все в порядке как в HTML4, так и в HTML5. Это не будет работать в Netscape 4, но вы, вероятно, будете использовать дюжину других функций, которые не работают в Netscape 4.источник
id
s какname
якоря с точки зрения фрагментов URL и совместимости:target
селектора CSS . Протестировано: Chrome 6, Firefox 1.5, IE6, Opera 8.02, Safari 3.1.2, Netscape 7.2, Lynx 2.24 и мобильные браузеры: Android 2.2, Chrome 26, Dolphin 9.3, Firefox 19, IE10, Safari 4 и Opera Mini 5.1.Я должен сказать, если вы собираетесь ссылаться на эту область на странице ... например, page.html # foo и Foo Title не является ссылкой, которую вы должны использовать:
Если вместо этого вы поместите
<a>
ссылку вокруг него, ваш заголовок будет зависеть от<a>
конкретного CSS на вашем сайте. Это просто дополнительная разметка, и она вам не нужна. Я настоятельно рекомендую поместить идентификатор в заголовок, он не только лучше сформирован, но и позволит вам обратиться к этому объекту в Javascript или CSS.источник
Википедия интенсивно использует эту функцию, например:
И Википедия работает для всех, поэтому я чувствую себя в безопасности, придерживаясь этой формы.
Также не забывайте, что вы можете использовать это не только для span, но и для div или даже ячеек таблицы, и тогда у вас есть доступ к псевдоклассу: target в элементе. Просто следите за тем, чтобы не изменять ширину, как жирным шрифтом, потому что содержимое перемещается, что мешает.
Именованные якоря - мой голос, чтобы избежать:
источник
a {color:red}
он раскрасит как ваши <a href> ссылки, так и ваши <a name> фрагменты. Вы можете обойти это с помощью псевдо-классовa:link {color:red]}
или селекторов атрибутовa:not([href]) {color:red;}
<a name="heading1"></a> ... document.html#heading1
без установки идентификатора, поскольку идентификатор может конфликтовать с другим идентификатором на странице. Жаль, что они не поместилиname
атрибут в HTML5.это то, что следует использовать. Не используйте якорь, если вы не хотите ссылку.
источник
Heads для пользователей JavaScript: все идентификаторы становятся глобальными переменными под окном .
Только что создал глобальный JS:
Значение
window.foo
будетHTMLElement
дляh1
.Если вы не можете гарантировать, что все значения, используемые в
id
атрибутах, безопасны, вы можете придерживатьсяname
:источник
window
. Например,<div id="open"></div>
не будет перезаписывать функциюwindow.open
.Там нет семантической разницы; тенденция в стандартах заключается в использовании,
id
а неname
. Тем не менее, есть различия, которые могут привести к предпочтениюname
в некоторых случаях. Спецификация HTML 4.01 предлагает следующие советы :Использовать
id
илиname
? Авторы должны учитывать следующие вопросы при принятии решения, использоватьid
лиname
имя якоря:источник
id
работать якоря в Safari для iOS 5, так что не только браузеры были «действительно старыми» в '09. Мне пришлось добавитьname
s, чтобы мой сайт работал должным образом на iPad. Возможно, это уже исправлено, у меня нет устройств iOS 6 для проверки.id
якоря, кажется, работают универсально. Если этот простой пример не работает на вашем мобильном телефоне, я бы проверил настройки доступности устройства. (На мобильном сайте @deathApril в Википедии есть Javascript, который эффективно игнорирует фрагмент URL.)Метод ID не будет работать в старых браузерах, метод имени привязки будет устаревшим в новых версиях HTML ... Я бы пошел с идентификатором.
источник
У меня есть веб-страница, состоящая из нескольких вертикально расположенных контейнеров div, идентичных по формату и отличающихся только серийным номером. Я хотел скрыть привязку имени вверху каждого элемента div, поэтому наиболее экономичным решением оказалось включение привязки в качестве идентификатора в открывающий тег div, т. Е.
источник
Во втором примере присваивается уникальный идентификатор рассматриваемому элементу. Этот элемент может быть затем обработан или доступен с помощью DHTML.
Первый, с другой стороны, устанавливает именованное местоположение в документе, похожее на закладку. Прикрепленный к «якору», это имеет смысл.
источник
Просто наблюдение о разметке Форма разметки в предыдущих версиях HTML обеспечивала опорную точку. Формы разметки в HTML5, использующие атрибут id, хотя и в основном эквивалентные, требуют элемента для идентификации, почти все из которых обычно должны содержать контент.
Например, можно использовать пустой span или div, но это выглядит и пахнет вырожденно.
Одна мысль состоит в том, чтобы использовать элемент wbr для этой цели. В wbr есть пустая модель контента и просто объявляется, что возможен разрыв строки; это все еще немного бесплатное использование тега разметки, но намного меньше, чем бесплатное разделение документов или пустые интервалы текста.
источник
wbr
: w3.org/TR/html-markup/wbr.html Используйте,<wbr id="foo" />
а не<a name="foo"></a>
В html 5
id=""
атрибут определяет уникальный идентификатор для элемента, который также является якорем для ссылки фрагмента. В предыдущих стандартах htmlname=""
атрибут<a>
элемента определяет привязку для ссылки фрагмента. Я рекомендую что-то вроде:<a name="foo" id="foo"></a><h1>Foo Title</h1>
потому что поддержка
id=""
атрибута немного нестабильна (хотя последние выпуски всех основных браузеров поддерживают его, выпуски не старше нескольких лет [И лучше не ломать что-либо если нет веских причин для этого)). Он совместим и не стилизует то, что находится в элементе link'd, поскольку закрывающий элемент </a> все еще находится за пределами элемента, но он по-прежнему действует во всех действующих стандартах.Убедитесь , что
name=""
иid=""
атрибуты<a>
элемента одинаковы.источник
name
атрибут в теге привязки, который был необходим; размещение атрибутов наhN
илиspan
не работает.Как насчет использования атрибута name для старых браузеров и атрибута id для новых браузеров. Будут использованы обе опции, и по умолчанию будет реализован запасной метод !!!
источник
Вся концепция «именованного якоря» использует атрибут name по определению. Вы должны просто использовать имя, но атрибут ID может быть полезен для некоторых ситуаций с JavaScript.
Как и в комментариях, вы всегда можете использовать оба для хеджирования ваших ставок.
источник