2010-05-10 12 views

Respuesta

89

Es un "fragmento" o "ancla nombrada". Puede usar para vincular a parte de un documento. Normalmente, cuando se vincula a una página, el navegador la abre en la parte superior de la página. Pero si enlaza a una sección a la mitad, puede usar el fragmento para vincularlo a ese encabezado (o lo que sea).

Si no hay una etiqueta <a name="whatever"/> dentro de la página, el navegador simplemente enlazará con la parte superior de la página. Si el fragmento está vacío, también se vinculará con la parte superior de la página.

Por un fragmento única<a href="#">Link name</a>, entonces eso es sólo un enlace a la parte superior de la página actual .

A menudo se ve ese tipo de enlace utilizado en conjunción con javascript. El HTML que cumple con los estándares requiere un atributo href, pero si planea manejar la solicitud con javascript, entonces "#" sirve como un marcador de posición razonable.

+1

+1 Aunque el término oficial es un fragmento de URL, no una "referencia de hash": http://www.w3.org/TR/WD-html40-970708/htmlweb.html#h-4.1.1 –

+0

Sí , Lo cambié a "fragmento" en mi respuesta, porque eso es lo que usa la mayoría de la gente. Sin embargo, nunca supe que tenía un nombre "oficial" :) –

+2

Por qué los navegadores lo tratan como 'ir al principio de la página': Técnicamente, usted cambió la página. Después de hacer clic en el enlace, observará que el # se agrega realmente a la URL en la barra de direcciones, y si hace clic en el botón Atrás lo eliminará nuevamente. No diría que es un enlace a una parte de un documento, más un enlace a un lugar dentro del documento. De lo contrario, básicamente lo mismo que estaba escribiendo ... – animuson

2

Esto vuelve a la página. A menudo se usa con enlaces que realmente ejecutan JavaScript.

22

... solo para agregar algunos consejos útiles adicionales.

Puede acceder y cambiarlo con document.location.hash en JavaScript.

Se puede apuntar a un anclaje con nombre (por ejemplo <a name="top"></a>) o a un elemento con un ID correspondiente (por ejemplo <div id="top"></div>).

Ver uno solo (por ejemplo, <a href="#" onclick="pop()">popup</a>) generalmente significa que se está utilizando un enlace para ejecutar JavaScript exclusivamente. Esta es una mala práctica.

Cualquier elemento a debe tener un href que apunta a un recurso válido. Si no existe, considere usar otro elemento, como button.

+1

Ese es un buen punto al respecto, no es una buena práctica en particular ... pero el hecho de que no sea bueno no significa que no lo encuentres usado así en todo el mundo. lugar :) –

+1

@alex, si es una mala práctica, entonces díganos cuál es la * buena * práctica para usar en su lugar. –

+0

@Kyralessa Fue justo allí en el siguiente párrafo. De todos modos, hice una edición, así que espero que esté más clara. – alex

9

# indica un enlace a un ancla.

Me vestuario también me gustaría mencionar otra cosa:

El uso de '#' como el href para un enlace que activa JavaScript es malo porque se desplaza la página a la parte superior - que probablemente no es lo que desea. En su lugar, use javascript:void(0).

+0

+1 por mencionar que al hacer clic en estos enlaces, la página se desplaza hacia la parte superior. –

+4

Ya no necesita un ancla. A partir de HTML5 (y tal vez HTML 4), cualquier elemento con una etiqueta puede ser identificado por un identificador de fragmento. Consulte los documentos HTML5: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#scroll-to-fragid –

+1

No use 'javascript: void (0)' tampoco - use un 'botón' si no es un enlace. – alex

6

El signo de almohadilla (#) indica que debe ubicarse un ancla en la página. Por ejemplo, si se incluye esta parte de la página:

<a name="foo"></a> 

o, más recientemente:

<div id="foo">*part of page*</div> 

y luego hace clic en un enlace en la página que tiene el href #foo, que navegará al ancla con el nombre div con el id foo.

Sin embargo, si solo tiene el href #, llevará a la parte superior de la página.

Cuestiones relacionadas