Cuando se quiere hacer referencia a alguna parte de una página web con el http://example.com/#foométodo " ", se debe usar
<h1><a name="foo"/>Foo Title</h1>
o
<h1 id="foo">Foo Title</h1>
Ambos funcionan, pero ¿son iguales o tienen diferencias semánticas?
                    
                        html
                                hyperlink
                                fragment-identifier
                                
                    
                    
                        Henrik Paul
fuente
                
                fuente

http://example.com#foo(sin el / antes #)http://example.com#fooyhttp://example.com/#fooson equivalentes como se define en uno de los RFC en URI.Respuestas:
De acuerdo con la especificación HTML 5, 5.9.8 Navegación a un identificador de fragmento :
Entonces, buscará
id="foo", y luego seguirá aname="foo"Editar: como señaló @hsivonen, en HTML5 el
aelemento no tiene atributo de nombre. Sin embargo, las reglas anteriores todavía se aplican a otros elementos nombrados.fuente
<h1 id="foo">Foo Title</h1>funciona incluso en IE6 y es parte de la especificación HTML 4.01name="foo"y aid="foo"(independientemente de su orden dentro de la página), Chrome y Firefox saltarán alid, pero IE (probado en 11) y Edge saltarán alnameNo debe usar
<h1><a name="foo"/>Foo Title</h1>ningún tipo de HTML servidotext/html, porque la sintaxis de elemento vacío XML no es compatibletext/html. Sin embargo,<h1><a name="foo">Foo Title</a></h1>está bien en HTML4. No es válido en HTML5 como está redactado actualmente.<h1 id="foo">Foo Title</h1>está bien tanto en HTML4 como en HTML5. Esto no funcionará en Netscape 4, pero probablemente usará una docena de otras características que no funcionan en Netscape 4.fuente
ids comonameanclas en términos de fragmentos de URL y compatibilidad del:targetselector CSS . Probado: Chrome 6, Firefox 1.5, IE6, Opera 8.02, Safari 3.1.2, Netscape 7.2, Lynx 2.24 y navegadores móviles: Android 2.2, Chrome 26, Dolphin 9.3, Firefox 19, IE10, Safari 4 y Opera Mini 5.1.Debo decir que si va a vincular a esa área en la página ... como page.html # foo y Foo Title no es un enlace que debería usar:
Si, por el contrario, coloca una
<a>referencia a su alrededor, su título estará influenciado por un<a>CSS específico dentro de su sitio. Es solo un marcado adicional, y no debería necesitarlo. Recomiendo encarecidamente colocar una identificación en el título, no solo está mejor formada, sino que le permitirá abordar ese objeto en Javascript o CSS.fuente
Wikipedia hace un uso intensivo de esta característica como esta:
Y Wikipedia está funcionando para todos, por lo que me sentiría seguro al seguir este formulario.
Además, no olvide que puede usar esto no solo con tramos sino también con divs o incluso celdas de tabla, y luego tiene acceso a la pseudoclase: target en el elemento. Solo tenga cuidado de no cambiar el ancho, como con texto en negrita, porque eso mueve el contenido, lo cual es inquietante.
Anclajes nombrados: mi voto es evitar:
fuente
a {color:red}diseña, coloreará sus enlaces <a href> Y sus fragmentos <a name>. Puede solucionar esto con pseudo clasesa:link {color:red]}o selectores de atributosa:not([href]) {color:red;}<a name="heading1"></a> ... document.html#heading1sin establecer la ID, porque la ID puede chocar con otra ID en la página. Es una pena que no hayan puesto elnameatributo en HTML5.es lo que se debe usar. No use un ancla a menos que quiera un enlace.
fuente
Atención a los usuarios de JavaScript: todas las ID se convierten en variables globales en la ventana .
Acabo de crear el JS global:
El valor de
window.fooseráHTMLElementpara elh1.A menos que pueda garantizar que todos los valores utilizados en los
idatributos sean seguros, puede preferir atenerse aname:fuente
window. Por ejemplo,<div id="open"></div>no sobrescribirá la funciónwindow.open.No hay diferencia semántica; La tendencia en las normas es hacia el uso de
idmás quename. Sin embargo, hay diferencias que pueden llevar a preferirnameen algunos casos. La especificación HTML 4.01 ofrece las siguientes sugerencias :Usar
idoname? Los autores deben considerar los siguientes problemas al decidir si usaridonamepara un nombre de anclaje:fuente
idanclas funcionaran en Safari para iOS 5, por lo que no solo los navegadores eran "realmente viejos" en el '09. Tuve que agregarnames para que mi sitio funcionara correctamente en el iPad. Esto podría haberse solucionado ahora, no tengo ningún dispositivo iOS 6 para verificar.idanclas parecen funcionar universalmente. Si este simple ejemplo no funciona en su dispositivo móvil, comprobaría la configuración de accesibilidad del dispositivo. (@deathApril El sitio móvil de Wikipedia tiene Javascript que efectivamente hace que se ignore el fragmento de URL.)El método de ID no funcionará en navegadores más antiguos, el método de nombre de anclaje quedará en desuso en las versiones HTML más nuevas ... Yo iría con id.
fuente
Tengo una página web que consta de varios contenedores div apilados verticalmente, idénticos en formato y que solo difieren en número de serie. Quería ocultar el nombre del ancla en la parte superior de cada div, por lo que la solución más económica resultó ser incluir el ancla como una identificación dentro de la etiqueta div de apertura, es decir,
fuente
La segunda muestra asigna una identificación única al elemento en cuestión. Este elemento se puede manipular o acceder mediante DHTML.
El primero, por otro lado, establece una ubicación con nombre dentro del documento, similar a un marcador. Unido a un "ancla", tiene mucho sentido.
fuente
Solo una observación sobre el marcado El formulario de marcado en versiones anteriores de HTML proporcionó un punto de anclaje. Los formularios de marcado en HTML5 que utilizan el atributo id, aunque son en su mayoría equivalentes, requieren un elemento para identificar, casi todos los cuales normalmente se espera que contengan contenido.
Se podría usar un span o div vacío, por ejemplo, pero este uso se ve y huele degenerado.
Un pensamiento es usar el elemento wbr para este propósito. El wbr tiene un modelo de contenido vacío y simplemente declara que es posible un salto de línea; Esto sigue siendo un uso ligeramente gratuito de una etiqueta de marcado, pero mucho menos que las divisiones de documentos gratuitos o espacios de texto vacíos.
fuente
wbr: w3.org/TR/html-markup/wbr.html Usar en<wbr id="foo" />lugar de<a name="foo"></a>En html 5, el
id=""atributo define un identificador único para un elemento, que también es un ancla para un enlace de fragmento. En estándares html anteriores, elname=""atributo del<a>elemento define un ancla para un enlace de fragmento. Recomiendo algo como:<a name="foo" id="foo"></a><h1>Foo Title</h1>Debido a que el soporte para el
id=""atributo es un poco irregular (aunque las últimas versiones de todos los navegadores principales lo admiten, las versiones que no tienen más de unos pocos años [Y es mejor no romper algo si no hay una buena razón para]). Es compatible y no da estilo a lo que sea que esté en el elemento vinculado, ya que el cierre </a> todavía está fuera del elemento, pero sigue siendo válido en todos los estándares actuales.Asegúrese de que los atributos
name=""yid=""del<a>elemento sean los mismos.fuente
nameatributo en una etiqueta de anclaje que se requería; colocar atributos enhNospanno funcionó.¿Qué tal usar el atributo de nombre para los navegadores antiguos y el atributo de identificación para los nuevos navegadores? Se usarán ambas opciones y se implementará el método alternativo de forma predeterminada.
fuente
Todo el concepto de "ancla con nombre" utiliza el atributo de nombre, por definición. Debería limitarse a usar el nombre, pero el atributo ID podría ser útil para algunas situaciones de JavaScript.
Como en los comentarios, siempre puedes usar ambos para cubrir tus apuestas.
fuente