<a>: El elemento ancla
======================

El *Elemento HTML `Anchor`* **`<a>`** crea un enlace a otras páginas de internet, archivos o ubicaciones dentro de la misma página, direcciones de correo, o cualquier otra URL.

Pruébalo
--------

The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.

|  |  |
| --- | --- |
| Categorías de contenido | 
 Contenido de flujo, contenido de párrafo, contenido interactivo,
 contenido palpable
  |
| Contenido permitido | Transparente, que contiene contenido de flujo (excluyendo contenido
interactivo) o contenido de párrafo. (en-US) |
| Omisión de etiquetas | None, both the starting and ending tag are mandatory. |
| Elementos principales permitidos | 
 Cualquier elemento que acepte contenido de párrafo o cualquier elemento
 que acepte contenido de flujo, sin embargo simpre excluyendo los
 elementos <a> (de acuerdo con el principio lógico de simetría, si
 una etiqueta <a> como padre, no puede contener contenido
 interactivo, entonces el mismo contenido de <a> no puede tener una
 etiqueta <a> como su padre).
  |
| Roles ARIA permitidos | `button` (en-US), `checkbox` (en-US),
 `menuitem` (en-US),
 `menuitemcheckbox` (en-US),
 `menuitemradio` (en-US), `option` (en-US),
 `radio` (en-US), `switch` (en-US),
 `tab` (en-US), `treeitem` (en-US) |
| Interfaz DOM | `HTMLAnchorElement` |

Atributos
---------

Este elemento incluye los atributos globales (en-US).

`download`

Este atributo, indica descargar a los navegadores una URL en lugar de navegar hacia ella, por lo que el usuario será dirigido para salvarla como un archivo local. Si el atributo tiene un valor, éste se utilizará como nombre de archivo por defecto en el mensaje Guardar que se abre cuando el usuario hace clic en el enlace (sin embargo, el usuario puede cambiar el nombre antes de guardar el archivo). No hay restricciones sobre los valores permitidos, aunque: / y: \ se convertirán en guiones bajos (*underscores*), lo que evitará sugerencias de ruta específicas. Se debe tener en cuenta que la mayoría de los sistemas de archivos tienen limitaciones con respecto a los símbolos de puntuación admitidos en los nombres de archivo, por lo que los navegadores ajustarán los nombres de los archivos en consecuencia.

**Nota:**

* Este atributo sólo funciona para las políticas de mismo origen (same-origin URLs).
* Este atributo puede ser utilizado con `blob:` URLs (en-US) y `data:` URLs para descargar contenido generado por JavaScript, tales como fotografías creadas por una aplicación web de edición de imágenes.
* Si el encabezado (*header*) HTTP `Content-Disposition:` proporciona un nombre de archivo diferente al de este atributo, el encabezado HTTP tiene prioridad sobre este atributo.
* Si `Content-Disposition:` está ajustado a `inline`, Firefox prioriza `Content-Disposition`, como en el caso del nombre de archivo, mientras que Chrome prioriza el atributo `download`.

`href`

 Contiene una URL o un fragmento de URL al cual apunta el enlace.
 Un fragmento de URL es un nombre ("name") precedido por el símbolo de número (`#`), el cual especifíca una ubicación interna objetivo (un ID (en-US) de un elemento HTML) dentro del actual documento. Las URLs no están restringidas sólo a documentos de internet basados en HTTP, sin embargo pueden utilizar cualquier protocolo soportado por el navegador. Por ejemplo, `file:`, `ftp:`, and `mailto:` funcionan en la mayoría de los navegadores.
 Este atributo puede ser omitido (a partir de HTML5) para crear un enlace de marcador de posición. Un enlace de marcador de posición se parece a un enlace tradicional, pero que no dirige a algún lugar.


**Nota:** Puede ser utilizado `href="#top"` o un fragmento vacío `href="#"` para enlazar a la parte superior de la página actual. Este comportamiento está especficado en HTML5.

`hreflang`

Este atributo indica el lenguaje humano del recurso al que se enlaza. Este es únicamente informativo, sin ninguna funcionalidad incorporada. Los valores permitidos están determinados por BCP47.

`referrerpolicy` 
Experimental

Indica que referencia (*referer*) enviar cuado la URL es recuperada:

* `'no-referrer'` significa `Referer:` el encabezado no será enviado.
* `'no-referrer-when-downgrade'` significa sin `Referer:` el encabezado será enviado cuando se navega a un origen (`origin`) sin HTTPS. Este es un comportamiento por defecto.
* `'origin'` significa que el "referrer" estará en el origen (en-US) (`origin`) de la página, no incluye la información posterior al dominio.
* `'origin-when-cross-origin'` significa que la navegación a otros orígenes (*origins*) será limitada al esquema (*scheme*), el host y el puerto, mientras que la navegación en el mismo origen (origin) incuirá la trayectoria de referencia (*referrer's path*).
* `'unsafe-url'` significa que la referencia (*referrer*) incuirá el origen(`origin`) y la trayectoria (*path*), pero no el fragmento, contraseña o nombre de usuario. Esto es inseguro, ya que puede filtrar datos desde una URL segura hacia URLs inseguras.

`rel`

Especifica la relación del objeto de destino con el objeto de enlace. El valor es una lista separada por espacios de tipos de enlacetipos de enlace (link types).

`target`

Especifica en donde desplegar la URL enlazada. Es un nombre (*name of*), o palabra clave (*keyword for*), un contexto de navegación *(browsing context)*: una pestaña, ventana, o `<iframe>`. Las siguientes palabras clave (*keywords*) tienen significado especial:

* `_self`: Carga la URL en el mismo contexto de navegación que el actual. Este es el comportamiento por defecto.
* `_blank`: Carga la URL en un nuevo contexto de navegación. Usualmente es una pestaña, sin embargo, los usuarios pueden configurar los navegadores para utilizar una ventana nueva en lugar de la pestaña.
* `_parent`: Carga la URL en el contexto de navegación padre (*parent*) del actual. Si no existe el padre, este se comporta del mismo modo que `_self`.
* `_top`: Carga la URL en el contexto más alto de navegación (el cual es un ancestro del actual, y no tiene padre (*parent*)). Si no hay padre (*parent*), este se comporta del mismo modo que `_self`.

**Nota:** Cuando se utiliza `target`, considera agregar `rel="noopener noreferrer"` para evitar el uso de la API `window.opener`.

`type`

Especifica el tipo de medio (*media type*) en la forma de MIME type (en-US) para la URL enlazada. Esto es únicamente informativo, sin ninguna funcionalidad incorporada.

### Atributos obsoletos

`charset` 
Obsoleto

Este atributo define la codificación de caracteres (character encoding) de la URL enlazada. El valor debe de ser una lista delimitada por espacio y/o coma de caracteres definidos en RFC 2045. El valor por defecto es `ISO-8859-1`.

**Nota:** Este atributo es obsoleto en HTML5 y **no debe ser utilizado por autores**. Para lograr su efecto, se debe utilzar el encabezado HTTP `Content-Type:` en la URL enlazada.

`coords` 
Obsoleto

Para utilizar con el siguiente atributo `shape`, este atributo utiliza una lista de números separada por comas para definir las coordenadas del enlace en la página.

`name` 
Obsoleto

Este atributo era requerido para anclas (*anchors*) que definían una posible ubicación dentro de la página. En HTML 4.01, `id` y `name` podían ser utilizados simultáneamente en un elemento `<a>` simpre y cuando tuvieran valores idénticos.

**Nota:** Este atributo es obsoleto en HTML5, se utiliza el atributo global `id` (en-US) en su lugar.

`rev` 
Obsoleto

Este atributo especifica un enlace inverso, la relación inversa del atributo **rel**. Fue desechado por ser muy confuso.

`shape` 
Obsoleto

Este atributo era utilizado para definir una región de enlaces para crear un mapa de imagen. El valore es `circle`, `default`, `polygon`, y `rect`. El formato del atributo `coords` depende del valor de la forma geométrica. Para `circle`, el valor es `x,y,r` donde `x` y `y` son las coordenadas en pixel para el centro del círculo y `r` es el valor del radio en pixeles. Para `rect`, el atributo `coords` debe ser `x,y,w,h`. Los valores `x y y` definen la esquina superior izquierda del rectángulo, mientras que `w` y `h` definen el ancho y el alto respectivamente. Un valor del `polygon` para `shape` requiere los valores `x1,y1,x2,y2,...` para `coords`. Cada uno de los pares `x,y` definen un punto en el polígono, con puntos sucesivos que son unidos por líneas rectas y el útlimo punto se une al primer punto. El valor `default` para `shape` Requiere que el área encerrada, típicamente una imágen, sea utilizada.

**Nota:** Utilice el atributo `usemap` para el elemento `<img>` y el elemento asociado `<map>` para definir puntos de acceso (*hotspots*) en lugar del atributo `shape`.

Ejemplos
--------

### Enlazando a una ubicación externa


```html
<!-- anclaje a un archivo externo -->
<a href="https://www.mozilla.com/">Enlace externo</a>
```


#### Resultado

Enlace externo

### Enlazando a otra sección de la misma página


```html
<!-- enlace a un elemento en esta página con id="attr-href" -->
<a href="#attr-href">Descripción de enlaces de la misma página</a>
```


#### Resultado

Descripción de enlaces de la misma página

### Creando una imagen clicable

Este ejemplo utiliza una imagen que enlaza a la página de inicio de MDN. La página de inicio se abrirá en un contexto de navegación nuevo, esto es, en una nueva página o nueva ventana.


```html
<a href="https://developer.mozilla.org/en-US/" target="\_blank">
  <img src="mdn\_logo.png" alt="MDN logo" />
</a>
```


#### Resulta

### Creando un enlace de correo

Es común crear enlaces que abren el programa de correo del usuario para permitir enviar un nuevo mensaje. Esto se hace con un enlace `mailto:`. Aquí tenemos un ejemplo:


```html
<a href="mailto:nowhere@mozilla.org">Enviar correo a nowhere</a>
```


#### Resultado

Envia un correo a: nowhere

Para detalles adicionales acerca del esquema de la URL `mailto`, tales como incluir el asunto, el cuerpo u otros contenidos predeterminados, consultar Enlaces de correo (Email links) (en-US) o RFC 6068.

### Creando un enlace a un número de teléfono

Ofrecer enlaces a números de teléfono es muy útil para los ususarios que observan documentos de internet desde computadoras portátiles conectadas a teléfonos o desde teléfonos celulares (móviles)


```html
<a href="tel:+491570156">+49 157 0156</a>
```


Para detalles adicionales acerca del esquema de la URL `tel`, consultar RFC 2806 y RFC 2396.

### Utilizando el atributo `download` para guardar un `<canvas>` como PNG

Si deseas permitir a los usurios descargar una elemento HTML `<canvas>` como una imagen, puedes crear un enlace con una atributo `download` y la información canvas como un archivo URL:


```js
var link = document.createElement("a");
link.innerHTML = "download image";

link.addEventListener(
  "click",
  function (ev) {
    link.href = canvas.toDataURL();
    link.download = "mypainting.png";
  },
  false,
);

document.body.appendChild(link);
```


Puedes ver como funciona en: jsfiddle.net/codepo8/V6ufG/2/.

Notas
-----

HTML 3.2 define sólo los atributos `name`, `href`, `rel`, `rev`, y `title`.

### Recomendaciones de accesibilidad

Se abusa frecuntemente de las etiquetas de ancla (*anchor tags*) con el uso de los eventos `onclick` para crear pseudo-botones ajustando **href** a `"#"` o `"javascript:void(0)"` para prevenir la recarga de la página. Estos valores provocan comportamientos inesperados con los enlaces de copiado/dibujado, la apertura de enlaces en nuevas pestañas/ventanas, el guardado de enlaces (*bookmarking*), y cuando JavaScript está aún descargando, esto arroja errores, o es deshabilitado. Esto tambíen lleva a semánticas (*semantics*) incorrectas para tecnologías de asistencia (p.ej., lectores de pantalla). En estos casos, se recomienda utilizar un `<button>` en su lugar. En general, sólo se debe utilizar una ancla (*anchor*) para navegación utilizando una URL adecuada.

Especificaciones
----------------

| Specification |
| --- |
| HTML Standard # the-a-element |

Compatibilidad con navegadores
------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Véase también
-------------

* Otros elementos comunicando a nivel semántico de texto (text-level semantics): `<abbr>`, `<em>`, `<strong>`, `<small>`, `<cite>`, `<q>`, `<dfn>`, `<time>`, `<code>`, `<var>`, `<samp>`, `<kbd>`, `<sub>`, `<sup>`, `<b>`, `<i>`, `<mark>`, `<ruby>` (en-US), `<rp>` (en-US), `<rt>` (en-US), `<bdo>`, `<span>`, `<br>`, `<wbr>`.