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ícateCreació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 enlacehref
: Es el atributo que especifica el destinoURL_o_ruta
: Es la dirección de destinoTexto 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ónnoopener
: 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 destinoexternal
: 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
comonoopener
- 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 correocc
: Destinatarios en copiabcc
: Destinatarios en copia ocultabody
: 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>
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.
Introducción A Html
Introducción Y Entorno
Doctype
Sintaxis Y Estructura
Elementos Y Etiquetas
Sintaxis Y Estructura
Atributos
Sintaxis Y Estructura
Anidación De Etiquetas
Sintaxis Y Estructura
Comentarios
Sintaxis Y Estructura
Encabezados (H1-h6)
Textos Y Enlaces
Enlace (A)
Textos Y Enlaces
Párrafo (P)
Textos Y Enlaces
Listas (Ul, Ol, Li)
Textos Y Enlaces
Imagen (Img)
Textos Y Enlaces
División (Div)
Organización De Contenido
Etiquetas Semánticas (Article, Section, Header, Footer, Nav, Aside)
Organización De Contenido
Tablas (Table, Tr, Td, Th)
Organización De Contenido
Formularios (Form, Input, Select, Textarea, Button)
Organización De Contenido
Imágenes Vectoriales (Svg)
Elementos Multimedia
Incrustación De Contenido (Iframe)
Elementos Multimedia
Audio (Audio)
Elementos Multimedia
Video (Video)
Elementos Multimedia
Estilo Incorporado (Style)
Metadatos Y Seo
Metadatos (Meta, Title, Link)
Metadatos Y Seo
Atributos De Aria
Metadatos Y Seo
Navegación Por Teclado
Metadatos Y Seo
Contraste Y Legibilidad
Optimización Html
Validación De Html
Optimización Html
Compatibilidad Con Navegadores
Optimización Html
Optimización De La Carga De La Página (Lazy Loading)
Optimización Html
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.
Reto etiquetas semánticas HTML
Divisiones
Reto atributos ARIA en HTML
Reto trabajar con imágenes en HTML
Formularios
Encabezados
Reto metadatos en HTML
Validación de HTML
Navegación por teclado
Párrafos
Uso de DOCTYPE
Etiquetas semánticas
Contraste y legibilidad
Atributos
Reto formatear texto en HTML
Reto crear listas HTML
Metadatos
Comentarios
Incrustación de contenido (iframe)
Uso de elementos y etiquetas
Audio
Proyecto crear páginas HTML
Enlace
Video
Imágenes
DOCTYPE
Compatibilidad con navegadores
Reto crear tablas HTML
Introducción a HTML
Imágenes vectoriales
Anidación de etiquetas
Reto Validación HTML
Optimización de la carga de la página (Lazy loading)
Listas
Estilos
Reto de enlaces HTML
Atributos de ARIA
Reto geolocalización en HTML
Tablas
Reto LocalStorage en HTML
Uso de atributos
Elementos y etiquetas
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.