HTML5

HTML

Tutorial HTML: Enlace (a)

Aprende a crear enlaces en HTML y usar atributos href, target, rel y download para mejorar navegación y seguridad web.

Aprende HTML y certifícate

Creación de enlaces internos y externos

Los enlaces son elementos fundamentales en HTML que permiten la navegación entre páginas web, conectando el contenido y creando la estructura de la World Wide Web. En HTML, los enlaces se crean mediante la etiqueta <a> (anchor).

Enlaces externos

Los enlaces externos son aquellos que apuntan a páginas web o recursos fuera de nuestro sitio. Para crear un enlace externo, necesitamos especificar la URL completa del destino.

<a href="https://www.example.com">Visitar Example.com</a>

En este ejemplo, el texto "Visitar Example.com" aparecerá como un enlace clickeable que llevará al usuario a la página web especificada. La URL completa (incluyendo el protocolo https://) es necesaria para enlaces externos.

Enlaces internos

Los enlaces internos conectan a diferentes páginas o secciones dentro del mismo sitio web. Existen dos tipos principales:

  • Enlaces a otras páginas del sitio: Utilizan rutas relativas en lugar de URLs completas.
<!-- Enlace a una página en el mismo directorio -->
<a href="contacto.html">Contacto</a>

<!-- Enlace a una página en un subdirectorio -->
<a href="servicios/precios.html">Lista de precios</a>

<!-- Enlace a una página en el directorio padre -->
<a href="../index.html">Volver al inicio</a>
  • Enlaces a secciones dentro de la misma página: Utilizan identificadores con el símbolo # para navegar a elementos específicos.
<!-- Primero, definimos un elemento con un id -->
<h2 id="seccion-contacto">Información de contacto</h2>

<!-- Luego, creamos un enlace que apunta a ese id -->
<a href="#seccion-contacto">Ir a contacto</a>

Este tipo de enlaces son especialmente útiles para crear menús de navegación en páginas largas o para implementar la funcionalidad de "volver arriba".

Combinando enlaces internos y externos

También podemos combinar ambos conceptos para enlazar a secciones específicas de páginas externas:

<a href="https://www.example.com/articulo#conclusiones">Ver conclusiones del artículo</a>

Buenas prácticas para la creación de enlaces

  • Texto descriptivo: Utiliza texto que describa claramente el destino del enlace.
<!-- Mal ejemplo -->
<a href="productos.html">Haz clic aquí</a>

<!-- Buen ejemplo -->
<a href="productos.html">Ver catálogo de productos</a>
  • Consistencia visual: Mantén un estilo coherente para todos los enlaces de tu sitio.

  • Evita abrir demasiadas pestañas nuevas: No abuses del atributo target="_blank" (que veremos en la siguiente sección).

  • Enlaces accesibles: Asegúrate de que los enlaces sean reconocibles visualmente y proporciona suficiente contraste.

Estructura básica de un enlace

La estructura básica de un enlace en HTML consta de:

<a href="URL_o_ruta">Texto o contenido del enlace</a>

Donde:

  • <a>: Es la etiqueta de apertura del enlace
  • href: Es el atributo que especifica el destino
  • URL_o_ruta: Es la dirección de destino
  • Texto o contenido: Es lo que el usuario verá y podrá hacer clic

Enlaces con contenido enriquecido

Los enlaces no están limitados a contener solo texto. Podemos incluir otros elementos HTML dentro de un enlace:

<a href="galeria.html">
  <img src="preview.jpg" alt="Vista previa de la galería">
  <p>Ver galería completa</p>
</a>

En este ejemplo, tanto la imagen como el texto funcionarán como un enlace clickeable.

Enlaces a fragmentos específicos

Para crear un enlace a una sección específica de una página, primero debemos asignar un id al elemento de destino y luego referenciar ese id en el enlace:

<!-- En la página de destino -->
<h2 id="historia">Historia de la empresa</h2>

<!-- En la página de origen (mismo sitio) -->
<a href="about.html#historia">Conoce nuestra historia</a>

<!-- Desde otro sitio web -->
<a href="https://example.com/about.html#historia">Historia de Example</a>

Enlaces a la parte superior de la página

Un uso común de los enlaces internos es crear un botón "volver arriba":

<!-- Al final de una página larga -->
<a href="#top">Volver arriba</a>

El identificador #top es especial en HTML y siempre lleva al inicio de la página, incluso sin tener que definir un elemento con id="top".

Rutas absolutas vs. relativas

  • Rutas absolutas: Incluyen el dominio completo y se usan principalmente para enlaces externos.
<a href="https://www.example.com/productos/nuevo.html">Producto nuevo</a>
  • Rutas relativas: Se refieren a la ubicación del archivo actual y se usan para enlaces internos.
<!-- Si estamos en /servicios/basicos.html y queremos enlazar a /servicios/premium.html -->
<a href="premium.html">Servicios premium</a>

<!-- Si queremos enlazar a /productos/nuevo.html desde /servicios/basicos.html -->
<a href="../productos/nuevo.html">Producto nuevo</a>

Las rutas relativas hacen que el sitio sea más portable y fácil de mantener, ya que no dependen de un dominio específico.

Consideraciones de seguridad

Al crear enlaces a sitios externos, especialmente aquellos que no controlas, considera añadir atributos de seguridad:

<a href="https://sitio-externo.com" rel="noopener noreferrer">Sitio externo</a>

Estos atributos rel ayudan a prevenir vulnerabilidades de seguridad, especialmente cuando se usan junto con target="_blank".

Atributos href, target, rel y download

Los enlaces en HTML no solo conectan páginas web, sino que también pueden controlar cómo se comporta esa conexión. Esto se logra mediante diversos atributos que podemos añadir a la etiqueta <a>. Vamos a explorar los atributos más importantes que potencian la funcionalidad de los enlaces.

El atributo href

El atributo href (Hypertext Reference) es el más fundamental de todos, ya que especifica el destino del enlace. Sin este atributo, una etiqueta <a> no funcionaría como enlace.

<a href="https://www.example.com">Sitio de ejemplo</a>

Además de URLs y rutas de archivo, el atributo href puede contener:

  • URLs de protocolo especial:
<a href="javascript:alert('Hola mundo')">Ejecutar JavaScript</a>
  • Enlaces vacíos (útiles cuando el comportamiento se controla con JavaScript):
<a href="#" id="boton-accion">Hacer clic</a>
  • Enlaces a recursos locales no HTML:
<a href="documento.pdf">Ver PDF</a>
<a href="imagen.jpg">Ver imagen</a>

El atributo target

El atributo target controla dónde se abrirá el enlace. Por defecto, los enlaces se abren en la misma ventana o pestaña, pero podemos modificar este comportamiento:

<!-- Abre el enlace en una nueva pestaña o ventana -->
<a href="https://www.example.com" target="_blank">Abrir en nueva pestaña</a>

<!-- Abre el enlace en la misma ventana (comportamiento predeterminado) -->
<a href="pagina.html" target="_self">Abrir en esta pestaña</a>

Los valores más comunes para el atributo target son:

  • _blank: Abre el enlace en una nueva ventana o pestaña
  • _self: Abre el enlace en el mismo marco (valor predeterminado)
  • _parent: Abre el enlace en el marco padre
  • _top: Abre el enlace en el cuerpo completo de la ventana

También podemos usar target con nombres personalizados para controlar qué enlaces se abren en qué ventanas:

<!-- Ambos enlaces se abrirán en la misma ventana nueva -->
<a href="pagina1.html" target="ventana-info">Información básica</a>
<a href="pagina2.html" target="ventana-info">Información avanzada</a>

El atributo rel

El atributo rel define la relación entre la página actual y la página enlazada. Tiene importantes implicaciones para SEO, seguridad y comportamiento del navegador:

<a href="https://twitter.com/perfil" rel="nofollow">Twitter</a>

Valores comunes del atributo rel:

  • nofollow: Indica a los motores de búsqueda que no sigan este enlace para indexación
  • noopener: Previene que la página enlazada pueda acceder a la ventana que la abrió (importante para seguridad)
  • noreferrer: Evita enviar información de referencia al sitio de destino
  • external: Indica que el enlace lleva a un sitio externo

Es común combinar varios valores:

<a href="https://sitio-externo.com" target="_blank" rel="noopener noreferrer external">
  Sitio externo seguro
</a>

El atributo download

El atributo download indica al navegador que el recurso enlazado debe descargarse en lugar de navegarse. Es especialmente útil para archivos como PDFs, imágenes o documentos:

<a href="manual.pdf" download>Descargar manual</a>

Podemos especificar un nombre de archivo diferente para la descarga:

<a href="reporte2023.pdf" download="informe-anual-2023.pdf">Descargar informe</a>

Este atributo solo funciona para:

  • Enlaces a recursos en el mismo origen (mismo dominio)
  • Enlaces a recursos con políticas CORS adecuadas
  • Navegadores que soporten esta funcionalidad

Combinando atributos para casos de uso específicos

Los atributos pueden combinarse para crear enlaces con comportamientos específicos:

  • Enlace de descarga segura:
<a href="archivo.zip" download rel="nofollow">
  Descargar archivo
</a>
  • Enlace externo seguro:
<a href="https://sitio-externo.com" target="_blank" rel="noopener noreferrer">
  Visitar sitio externo
</a>
  • Enlace para compartir en redes sociales:
<a href="https://twitter.com/intent/tweet?text=Mira%20este%20sitio" rel="nofollow external">
  Compartir en Twitter
</a>

Atributos de accesibilidad para enlaces

Además de los atributos principales, existen otros que mejoran la accesibilidad de los enlaces:

  • title: Proporciona información adicional sobre el enlace
<a href="terminos.html" title="Lea nuestros términos y condiciones completos">
  Términos de uso
</a>
  • aria-label: Define una etiqueta accesible para lectores de pantalla
<a href="https://twitter.com" aria-label="Visitar nuestra página de Twitter">
  <img src="twitter-icon.png" alt="Twitter">
</a>

Consideraciones de seguridad

Al usar el atributo target="_blank", siempre es recomendable añadir rel="noopener noreferrer" para prevenir vulnerabilidades de seguridad:

<!-- Forma segura de abrir enlaces en nuevas pestañas -->
<a href="https://sitio-externo.com" target="_blank" rel="noopener noreferrer">
  Sitio externo
</a>

Sin estos atributos rel, la página abierta podría potencialmente acceder a la ventana original a través de window.opener, lo que representa un riesgo de seguridad.

Compatibilidad con navegadores

La mayoría de los navegadores modernos soportan todos estos atributos, pero hay algunas consideraciones:

  • El atributo download no funciona en todos los navegadores móviles
  • Algunos navegadores antiguos no reconocen valores específicos de rel como noopener
  • Safari maneja algunos atributos de manera diferente que Chrome o Firefox

Por ello, es importante probar el comportamiento de los enlaces en diferentes navegadores cuando se utilizan estos atributos para funcionalidades críticas.

Enlaces para correo electrónico y teléfono

HTML permite crear enlaces especiales que, en lugar de dirigir a páginas web, inician acciones como enviar un correo electrónico o realizar una llamada telefónica. Estos enlaces de acción utilizan protocolos especiales en el atributo href para activar aplicaciones nativas del dispositivo del usuario.

Enlaces para correo electrónico

Los enlaces de correo electrónico utilizan el protocolo mailto: y permiten que los visitantes puedan contactar fácilmente con el propietario del sitio web. Al hacer clic en estos enlaces, se abre automáticamente el cliente de correo predeterminado del usuario con la dirección de destino ya configurada.

La sintaxis básica es:

<a href="mailto:contacto@example.com">Envíanos un email</a>

Este enlace abrirá el programa de correo electrónico del usuario con la dirección contacto@example.com ya completada en el campo destinatario.

Parámetros adicionales en enlaces mailto

Los enlaces de correo pueden incluir parámetros adicionales como asunto, cuerpo del mensaje, y destinatarios en copia:

<a href="mailto:info@example.com?subject=Consulta%20desde%20web&cc=soporte@example.com&body=Hola%2C%20me%20gustaría%20obtener%20más%20información">
  Solicitar información
</a>

Los parámetros disponibles son:

  • subject: Asunto predefinido del correo
  • cc: Destinatarios en copia
  • bcc: Destinatarios en copia oculta
  • body: Cuerpo del mensaje

Es importante codificar correctamente los espacios y caracteres especiales en estos parámetros:

  • Los espacios se reemplazan por %20
  • Los saltos de línea se representan con %0D%0A
  • Los signos de interrogación se codifican como %3F

Por ejemplo, para incluir un salto de línea en el cuerpo del mensaje:

<a href="mailto:info@example.com?body=Línea%201%0D%0ALínea%202">
  Email con formato
</a>

Enlaces para teléfono

Los enlaces telefónicos utilizan el protocolo tel: y son especialmente útiles en sitios web responsivos o diseñados para dispositivos móviles. Al hacer clic en estos enlaces, se inicia una llamada telefónica en dispositivos compatibles.

La sintaxis básica es:

<a href="tel:+34912345678">Llámanos: +34 912 345 678</a>

Formato de números telefónicos

Para garantizar la máxima compatibilidad, es recomendable seguir estas prácticas al crear enlaces telefónicos:

  • Incluir el código de país con el signo + (por ejemplo, +34 para España)
  • Eliminar espacios y caracteres especiales en el valor del atributo href
  • Mantener el formato legible en el texto visible del enlace
<!-- En el href: sin espacios ni caracteres especiales -->
<!-- En el texto visible: formato legible para humanos -->
<a href="tel:+34912345678">+34 912 345 678</a>

Extensiones telefónicas

Para números con extensiones, se puede utilizar el parámetro ext o simplemente el carácter de coma , que genera una pausa:

<a href="tel:+34912345678,123">+34 912 345 678 ext. 123</a>

Combinando protocolos con otros atributos

Los enlaces de correo y teléfono pueden combinarse con otros atributos como target y rel según sea necesario:

<a href="mailto:info@example.com" rel="nofollow">
  Contactar por email
</a>

Mejorando la accesibilidad

Para mejorar la accesibilidad de estos enlaces especiales, es recomendable:

  • Indicar claramente el propósito del enlace
  • Usar el atributo aria-label cuando sea necesario
  • Proporcionar información visual sobre qué acción se iniciará
<a href="tel:+34912345678" aria-label="Llamar a nuestro servicio de atención al cliente">
  <img src="phone-icon.svg" alt="Teléfono">
  <span>Atención al cliente: +34 912 345 678</span>
</a>

Consideraciones de privacidad y seguridad

Al implementar enlaces de contacto, ten en cuenta estas consideraciones:

  • Los enlaces mailto: pueden exponer direcciones de correo a rastreadores de spam
  • Para proteger las direcciones de correo electrónico, considera usar formularios de contacto como alternativa
  • En sitios con información sensible, evalúa si es apropiado mostrar números de teléfono como enlaces clickeables

Una técnica para proteger direcciones de correo es usar JavaScript para generar el enlace dinámicamente:

<a id="email-link">Contactar por email</a>

<script>
  document.getElementById('email-link').addEventListener('click', function(e) {
    e.preventDefault();
    let usuario = 'contacto';
    let dominio = 'example.com';
    window.location.href = 'mailto:' + usuario + '@' + dominio;
  });
</script>

Enlaces SMS

Además de correo y teléfono, HTML también permite crear enlaces para enviar mensajes SMS utilizando el protocolo sms::

<a href="sms:+34612345678?body=Quiero%20más%20información">
  Enviar SMS para información
</a>

Al igual que con mailto:, puedes incluir un texto predefinido usando el parámetro body.

Compatibilidad entre dispositivos

La compatibilidad de estos enlaces varía según el dispositivo y navegador:

  • Los enlaces tel: funcionan mejor en dispositivos móviles
  • En ordenadores de escritorio, pueden abrir aplicaciones como Skype o Microsoft Teams
  • Los enlaces mailto: generalmente funcionan en todos los dispositivos si hay un cliente de correo configurado
  • Los enlaces sms: tienen soporte limitado en ordenadores de escritorio

Para mejorar la experiencia en todos los dispositivos, considera proporcionar alternativas:

<div class="contact-options">
  <a href="tel:+34912345678">Llamar ahora</a>
  <span class="separator">|</span>
  <a href="mailto:info@example.com">Enviar email</a>
  <span class="separator">|</span>
  <a href="contact.html">Formulario de contacto</a>
</div>

Detección de capacidades

Para una experiencia óptima, puedes usar JavaScript para detectar las capacidades del dispositivo y mostrar solo los enlaces relevantes:

<div id="contact-methods">
  <!-- Los enlaces se generarán dinámicamente según el dispositivo -->
</div>

<script>
  const contactDiv = document.getElementById('contact-methods');
  
  // Detectar si es probable que sea un dispositivo móvil
  const isMobile = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
  
  if (isMobile) {
    contactDiv.innerHTML = '<a href="tel:+34912345678">Llamar ahora</a>';
  } else {
    contactDiv.innerHTML = '<a href="mailto:info@example.com">Enviar email</a>';
  }
</script>

Ejemplos prácticos

Algunos casos de uso comunes para estos enlaces especiales incluyen:

  • Sección de contacto en el pie de página:
<footer>
  <h3>Contacto</h3>
  <ul>
    <li><a href="tel:+34912345678">+34 912 345 678</a></li>
    <li><a href="mailto:info@example.com">info@example.com</a></li>
  </ul>
</footer>
  • Botón de llamada a la acción prominente:
<div class="cta-button">
  <a href="tel:+34900123456">
    <img src="phone-icon.svg" alt="">
    Llama gratis ahora
  </a>
</div>
  • Tarjeta de contacto de un miembro del equipo:
<div class="team-member">
  <img src="avatar.jpg" alt="Foto de Ana García">
  <h3>Ana García</h3>
  <p>Directora de Ventas</p>
  <a href="mailto:ana.garcia@example.com">ana.garcia@example.com</a>
  <a href="tel:+34912345678">+34 912 345 678</a>
</div>
Aprende HTML online

Otras lecciones de HTML

Accede a todas las lecciones de HTML y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Accede GRATIS a HTML y certifícate

Ejercicios de programación de HTML

Evalúa tus conocimientos de esta lección Enlace (a) con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender la estructura básica y tipos de enlaces en HTML.
  • Diferenciar entre enlaces internos y externos y sus usos.
  • Conocer y aplicar los atributos href, target, rel y download para controlar el comportamiento de los enlaces.
  • Crear enlaces especiales para correo electrónico y llamadas telefónicas con protocolos mailto: y tel:.
  • Implementar buenas prácticas de accesibilidad y seguridad en la creación de enlaces.