Quando alguém deseja se referir a alguma parte de uma página da web com o http://example.com/#foo
método " ", deve-se usar
<h1><a name="foo"/>Foo Title</h1>
ou
<h1 id="foo">Foo Title</h1>
Ambos funcionam, mas são iguais ou possuem diferenças semânticas?
html
hyperlink
fragment-identifier
Henrik Paul
fonte
fonte
http://example.com#foo
(tão sem a / antes #)http://example.com#foo
ehttp://example.com/#foo
são equivalentes conforme definido em um dos RFCs nos URIs.Respostas:
De acordo com a especificação do HTML 5, 5.9.8 Navegando para um identificador de fragmento :
Então, ele procurará
id="foo"
e seguirá paraname="foo"
Editar: como apontado por @hsivonen, no HTML5 o
a
elemento não tem atributo de nome. No entanto, as regras acima ainda se aplicam a outros elementos nomeados.fonte
<h1 id="foo">Foo Title</h1>
funciona mesmo no IE6 e faz parte da especificação HTML 4.01name="foo"
e umid="foo"
(independentemente de sua ordem dentro da página), Chrome e Firefox irá saltar para oid
, mas IE (testado em 11) e Edge irá saltar para oname
Você não deve usar
<h1><a name="foo"/>Foo Title</h1>
nenhum tipo de código HTMLtext/html
, porque a sintaxe do elemento vazio XML não é suportadatext/html
. No entanto,<h1><a name="foo">Foo Title</a></h1>
está OK no HTML4. Não é válido no HTML5, conforme redigido atualmente.<h1 id="foo">Foo Title</h1>
está OK no HTML4 e no HTML5. Isso não funcionará no Netscape 4, mas você provavelmente usará uma dúzia de outros recursos que não funcionam no Netscape 4.fonte
id
s comoname
âncoras em termos de fragmentos de URL e compatibilidade do:target
seletor CSS . Testado: Chrome 6, Firefox 1.5, IE6, Opera 8.02, Safari 3.1.2, Netscape 7.2, Lynx 2.24 e navegadores móveis: Android 2.2, Chrome 26, Dolphin 9.3, Firefox 19, IE10, Safari 4 e Opera Mini 5.1.Eu tenho que dizer se você irá criar um link para essa área na página ... como page.html # foo e Foo Title não é um link que você deve usar:
Se você colocar uma
<a>
referência, seu título será influenciado por um<a>
CSS específico em seu site. É apenas uma marcação extra e você não precisa dela. Eu recomendo colocar um ID no título, não só é melhor formado, como também permitirá que você endereça esse objeto em Javascript ou CSS.fonte
A Wikipedia faz uso pesado desse recurso assim:
E a Wikipedia está funcionando para todos, então eu me sentiria seguro em seguir este formulário.
Além disso, não se esqueça, você pode usar isso não apenas com extensões, mas também com divs ou mesmo células de tabela e, em seguida, terá acesso à pseudo-classe: target no elemento. Cuidado para não alterar a largura, como em texto em negrito, porque isso move o conteúdo, o que é perturbador.
Âncoras nomeadas - meu voto é para evitar:
fonte
a {color:red}
usar um estilo, ele colorirá os links <a href> E fragmentos <a name>. Você pode contornar isso com pseudo classesa:link {color:red]}
ou selectores de atributoa:not([href]) {color:red;}
<a name="heading1"></a> ... document.html#heading1
sem definir o ID, porque o ID pode colidir com outro ID na página. É uma pena que eles não tenham colocado oname
atributo em HTML5.é o que deve ser usado. Não use uma âncora, a menos que queira um link.
fonte
Atenção para usuários de JavaScript: todos os IDs se tornam variáveis globais na janela .
Acabou de criar o JS global:
O valor de
window.foo
será oHTMLElement
para oh1
.A menos que você possa garantir que todos os valores usados nos
id
atributos sejam seguros, você pode preferir seguirname
:fonte
window
. Por exemplo,<div id="open"></div>
não substituirá a funçãowindow.open
.Não há diferença semântica; a tendência nos padrões é mais para o uso do
id
que paraname
. No entanto, existem diferenças que podem levar a pessoa a preferirname
em alguns casos. A especificação HTML 4.01 oferece as seguintes dicas :Use
id
ouname
? Os autores devem considerar os seguintes problemas ao decidir usarid
ouname
para um nome de âncora:fonte
id
âncoras funcionassem no Safari para iOS 5, por isso não são apenas os navegadores que já eram "realmente antigos" em 2009. Eu tive que adicionarname
s para fazer meu site funcionar corretamente no iPad. Isso pode ter sido corrigido agora, não tenho dispositivos iOS 6 para verificar.id
âncoras parecem funcionar universalmente. Se este exemplo simples não funcionar no seu celular, eu verificaria as configurações de acessibilidade do dispositivo. (@deathApril O site móvel da Wikipedia possui Javascript que efetivamente faz com que o fragmento de URL seja ignorado.)O método de ID não funcionará em navegadores antigos, o método de nome da âncora será preterido nas versões HTML mais recentes ... Eu usaria o id.
fonte
Eu tenho uma página da Web que consiste em um número de contêineres div empilhados verticalmente, idênticos em formato e diferindo apenas no número de série. Eu queria ocultar o nome âncora na parte superior de cada div. Portanto, a solução mais econômica foi incluir a âncora como um ID na tag div de abertura, ou seja,
fonte
O segundo exemplo atribui um ID exclusivo ao elemento em questão. Este elemento pode ser manipulado ou acessado usando DHTML.
O primeiro, por outro lado, define um local nomeado dentro do documento, semelhante a um marcador. Anexado a uma "âncora", faz todo o sentido.
fonte
Apenas uma observação sobre a marcação O formulário de marcação nas versões anteriores do HTML forneceu um ponto de ancoragem. As formas de marcação em HTML5 usando o atributo id, embora sejam equivalentes, requerem um elemento para identificar, quase todo que normalmente se espera que contenha conteúdo.
Um span ou div vazio pode ser usado, por exemplo, mas esse uso parece e cheira degenerado.
Um pensamento é usar o elemento wbr para esse fim. O wbr possui um modelo de conteúdo vazio e simplesmente declara que é possível uma quebra de linha; ainda é um uso ligeiramente gratuito de uma tag de marcação, mas muito menos do que divisões de documentos gratuitas ou extensões de texto vazias.
fonte
wbr
: w3.org/TR/html-markup/wbr.html Use em<wbr id="foo" />
vez de<a name="foo"></a>
No html 5, o
id=""
atributo define um identificador exclusivo para um elemento, que também é uma âncora para um link de fragmento. Nos padrões html anteriores, oname=""
atributo do<a>
elemento define uma âncora para um link de fragmento. Eu recomendo algo como: como o<a name="foo" id="foo"></a><h1>Foo Title</h1>
suporte ao
id=""
atributo é um pouco irregular (mesmo que os lançamentos mais recentes de todos os principais navegadores o suportem, os lançamentos que não têm mais do que alguns anos de idade [E é melhor não quebrar algo se não houver uma boa razão para]). É compatível e não estiliza o que está no elemento vinculado, pois o fechamento ainda está fora do elemento, mas ainda é válido em todos os padrões atuais.Certifique-se de que os atributos
name=""
eid=""
do<a>
elemento sejam os mesmos.fonte
name
atributo em uma tag de âncora que foi necessário; colocar atributos em umhN
ouspan
não funcionou.Que tal usar o atributo name para navegadores antigos e o atributo id para os novos navegadores. Ambas as opções serão usadas e o método de fallback será implementado por padrão !!!
fonte
Todo o conceito de "âncora nomeada" usa o atributo name, por definição. Você deve continuar usando o nome, mas o atributo ID pode ser útil para algumas situações em javascript.
Como nos comentários, você sempre pode usar os dois para proteger suas apostas.
fonte