Cómo añadir un icono antes de un enlace con CSS

Aprende cómo añadir un icono antes de un enlace con CSS usando ::before, Unicode, Font Awesome y SVG con ejemplos fáciles de aplicar en tu web hoy.

Añadir un icono antes de un enlace con CSS es una forma sencilla de mejorar visualmente una página web y ayudar al usuario a identificar rápidamente qué tipo de acción realiza cada enlace.

🔗 Puedes utilizar un pequeño símbolo para diferenciar enlaces externos, descargas, correos electrónicos, teléfonos, documentos o cualquier otro elemento sin necesidad de modificar continuamente el código HTML.

La forma más práctica de conseguirlo consiste en utilizar el pseudoelemento ::before de CSS, ya que permite insertar contenido visual justo antes del texto de un enlace.

En este tutorial aprenderás diferentes métodos para poner un icono delante de un enlace utilizando CSS, desde caracteres Unicode hasta Font Awesome o imágenes SVG.

¿Para qué sirve añadir un icono antes de un enlace?

Los iconos permiten que tus enlaces resulten más intuitivos y reconocibles para las personas que navegan por tu página.

📄 Por ejemplo, puedes colocar el símbolo de un documento delante de todos los enlaces que permitan descargar archivos PDF.

🌐 También puedes identificar automáticamente los enlaces externos para avisar al usuario de que al pulsarlos abandonará tu página web.

📧 Otra posibilidad consiste en mostrar un icono de sobre delante de los enlaces que utilicen el protocolo mailto:.

📞 Incluso puedes identificar automáticamente los enlaces telefónicos utilizando un icono antes de todos los elementos cuyo atributo href comience por tel:.

Esta técnica resulta especialmente interesante porque puedes aplicar los iconos mediante CSS sin tener que añadirlos manualmente enlace por enlace.

Añadir un icono antes de un enlace con ::before

La solución más sencilla consiste en crear una clase CSS y utilizar el pseudoelemento ::before.

Primero puedes añadir una clase determinada al enlace que quieras modificar.

<a href="https://ejemplo.com" class="enlace-icono">Visitar página</a>

Después puedes añadir este CSS:

.enlace-icono::before {
    content: "🔗";
    margin-right: 6px;
}

🔗 El resultado será un pequeño icono colocado inmediatamente antes del texto del enlace.

La propiedad content determina qué elemento se mostrará, mientras que margin-right permite controlar la separación existente entre el icono y el texto.

Cómo añadir el código paso a paso

Puedes aplicar este efecto en prácticamente cualquier página construida con HTML y CSS siguiendo estos pasos:

  1. 🔎 Localiza el enlace al que quieres añadir el icono.
  2. 🏷️ Añade una clase CSS personalizada al elemento <a> si todavía no dispone de una.
  3. 🎨 Utiliza el selector ::before para insertar contenido delante del enlace.
  4. ✏️ Introduce el icono que quieras mostrar mediante la propiedad content.
  5. 📏 Añade un pequeño margen para evitar que el icono aparezca demasiado pegado al texto.
  6. 💾 Guarda los cambios y comprueba el resultado desde el navegador.

Si utilizas WordPress, normalmente podrás colocar este código dentro del apartado de CSS adicional de tu tema, en el editor correspondiente o dentro del archivo CSS de un tema hijo.

Ejemplo utilizando caracteres Unicode

No necesitas instalar ninguna biblioteca externa para mostrar iconos sencillos porque CSS permite utilizar caracteres Unicode directamente.

Por ejemplo, puedes crear un enlace de descarga utilizando este código:

.enlace-descarga::before {
    content: "⬇";
    margin-right: 5px;
}

Después solamente tendrás que aplicar la clase correspondiente:

<a href="archivo.pdf" class="enlace-descarga">Descargar documento</a>

⬇ Este método resulta especialmente ligero porque no carga archivos adicionales y funciona correctamente en prácticamente todos los navegadores modernos.

Puedes consultar diferentes símbolos disponibles en la tabla de caracteres Unicode para localizar alternativas adecuadas para tu diseño.

Añadir iconos automáticamente según el tipo de enlace

CSS también permite seleccionar enlaces mediante sus atributos, por lo que puedes añadir iconos automáticamente sin utilizar clases adicionales.

📧 Por ejemplo, puedes colocar un icono delante de todos los enlaces de correo electrónico:

a[href^="mailto:"]::before {
    content: "✉";
    margin-right: 5px;
}

📞 Puedes hacer exactamente lo mismo con los enlaces telefónicos:

a[href^="tel:"]::before {
    content: "☎";
    margin-right: 5px;
}

📄 También podrías identificar automáticamente todos los enlaces que apuntan a documentos PDF:

a[href$=".pdf"]::before {
    content: "📄";
    margin-right: 5px;
}

La combinación de selectores como ^= y $= resulta tremendamente útil cuando quieres automatizar este comportamiento.

Puedes conocer con mayor profundidad estos selectores consultando la documentación sobre selectores de atributos de MDN.

Cómo añadir un icono a los enlaces externos

Una utilización especialmente interesante consiste en identificar los enlaces externos mediante un icono.

Puedes crear una clase específica:

.enlace-externo::before {
    content: "↗";
    margin-right: 5px;
}

Después puedes aplicarla únicamente a aquellos enlaces que conduzcan hacia otra página web:

<a href="https://www.google.com" class="enlace-externo">Google</a>

↗ De esta forma, el visitante puede reconocer visualmente que ese enlace le llevará fuera de tu sitio web.

Añadir un icono con Font Awesome

Si necesitas iconos con una apariencia más profesional, otra alternativa consiste en utilizar una biblioteca como Font Awesome.

Font Awesome proporciona cientos de iconos que puedes utilizar dentro de botones, menús, enlaces y otros elementos de una página web.

Una vez cargada correctamente la biblioteca, puedes utilizar el código Unicode correspondiente al icono desde CSS:

.enlace-icono::before {
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    content: "\f35d";
    margin-right: 6px;
}

⚠️ Este método requiere que Font Awesome esté previamente cargado en la página, ya que de lo contrario aparecerá un símbolo vacío o incorrecto.

Si únicamente necesitas uno o dos símbolos sencillos, probablemente sea preferible utilizar Unicode o SVG para evitar cargar una biblioteca completa.

Añadir una imagen SVG antes del enlace

Otra opción muy interesante consiste en utilizar un archivo SVG como icono de fondo.

Puedes hacerlo de esta manera:

.enlace-svg::before {
    content: "";
    display: inline-block;
    width: 16px;
    height: 16px;
    margin-right: 6px;
    background-image: url("icono.svg");
    background-size: contain;
    background-repeat: no-repeat;
    vertical-align: middle;
}

Este sistema proporciona mucho más control sobre el aspecto del icono y permite utilizar diseños completamente personalizados.

🎨 Los archivos SVG son especialmente adecuados para interfaces web porque mantienen su calidad independientemente del tamaño al que se muestren.

Cómo cambiar el tamaño del icono

Cuando utilizas un carácter Unicode puedes controlar fácilmente su tamaño mediante font-size.

.enlace-icono::before {
    content: "➜";
    font-size: 18px;
    margin-right: 8px;
}

También puedes modificar el color:

.enlace-icono::before {
    content: "➜";
    color: #555;
    font-size: 18px;
    margin-right: 8px;
}

Esta solución te permite adaptar el icono al diseño visual de tu página sin modificar el propio enlace.

Cambiar el icono al pasar el ratón

También puedes crear pequeños efectos utilizando el estado :hover.

.enlace-icono::before {
    content: "→";
    margin-right: 6px;
}
.enlace-icono:hover::before {
    content: "➜";
}

🖱️ Cuando el visitante coloque el cursor sobre el enlace, el icono cambiará automáticamente.

Puedes combinar esta técnica con propiedades como transform, transition o opacity para conseguir efectos visuales más elaborados.

La documentación de pseudoelementos CSS de MDN puede ayudarte a descubrir otras posibilidades de personalización.

Tabla resumen de métodos para añadir iconos

MétodoDificultadRecursos externosPrincipal ventaja
Unicode + ::beforeMuy bajaNoLigero y sencillo
Selector de atributosBajaNoAutomatiza los iconos
Font AwesomeMediaSíGran variedad de iconos
SVGMediaNo necesariamentePersonalización total
Imagen de fondoMediaArchivo gráficoCompatible con diseños propios

Para la mayoría de páginas, utilizar Unicode combinado con ::before será suficiente y evitará cargar recursos adicionales.

¿Es mejor usar ::before o añadir el icono en HTML?

Utilizar ::before es recomendable cuando el icono tiene una función principalmente decorativa, ya que permite separar el diseño visual del contenido HTML.

También resulta especialmente práctico cuando quieres aplicar el mismo símbolo a decenas o cientos de enlaces mediante una única regla CSS.

Si el icono transmite información imprescindible para comprender el enlace, conviene valorar incluirlo directamente en el HTML teniendo en cuenta también la accesibilidad web.

Puedes consultar las recomendaciones de la Web Accessibility Initiative del W3C si quieres profundizar en este aspecto.

Errores frecuentes al poner iconos antes de enlaces

⚠️ Uno de los errores más habituales consiste en olvidar declarar la propiedad content, ya que ::before normalmente no aparecerá si esta propiedad no está definida.

Otro problema frecuente consiste en dejar el icono demasiado cerca del enlace, algo que puedes solucionar añadiendo margin-right.

También debes comprobar que la fuente elegida contiene el carácter que estás utilizando, especialmente cuando trabajas con bibliotecas de iconos externas.

En dispositivos móviles conviene verificar además que el icono no modifique incorrectamente la altura de línea o provoque saltos inesperados.

Qué método deberías utilizar

Si solamente quieres añadir una pequeña flecha, un símbolo de descarga o un icono similar, Unicode y ::before suelen ser la solución más sencilla.

Si necesitas distinguir automáticamente correos electrónicos, teléfonos, archivos PDF o determinados enlaces, puedes combinar ::before con selectores de atributos CSS.

Si buscas un diseño mucho más personalizado, los iconos SVG te proporcionarán mayor libertad y una excelente calidad visual.

🚀 Con apenas unas líneas de CSS puedes conseguir que tus enlaces sean más claros, atractivos y fáciles de reconocer, al mismo tiempo que mantienes el HTML limpio y evitas repetir elementos innecesarios en cada enlace.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿Necesitas ayuda?

Si estás teniendo problemas con tu proyecto online, si estás en proceso de crearlo, si necesitas una web o si la tuya no funciona como debería puedo ayudarte.

¿Quién soy?
Blog
Portfolio

Carrito de compra
Scroll al inicio