EN JA ZH ES

Cómo crear mapas de imagen HTML y alternativas modernas - Guía de implementación de mapas clicables

· 9 min de lectura

Fundamentos del mapa de imagen HTML - Estructura de los elementos map y area

Los mapas de imagen HTML definen múltiples regiones clicables dentro de una sola imagen. Combinando los elementos <map> y <area>, puedes asignar enlaces o acciones a coordenadas específicas de una imagen. Se han utilizado para mapas, planos de planta, diagramas anatómicos y organigramas donde diferentes partes de una imagen necesitan proporcionar información distinta.

Estructura básica:

<img src="office-map.png" usemap="#officemap" alt="Mapa de planta de oficina">
<map name="officemap">
<area shape="rect" coords="0,0,200,150" href="/meeting-room-a" alt="Sala de reuniones A">
<area shape="circle" coords="300,100,50" href="/lounge" alt="Sala de descanso">
<area shape="poly" coords="400,0,500,50,450,150" href="/reception" alt="Recepción">
</map>

Tipos del atributo shape:

  • rect: Rectángulo. coords="x1,y1,x2,y2" especifica las esquinas superior izquierda e inferior derecha
  • circle: Círculo. coords="cx,cy,r" especifica las coordenadas del centro y el radio
  • poly: Polígono. coords="x1,y1,x2,y2,..." lista las coordenadas de cada vértice
  • default: Imagen completa. Respaldo para áreas no cubiertas por otras regiones

El valor del atributo usemap es # seguido del valor del atributo name del elemento <map>. Todas las coordenadas están en píxeles con la esquina superior izquierda de la imagen como origen (0,0).

Diseño de coordenadas para mapas de imagen - Definición eficiente de regiones con herramientas

Calcular manualmente las coordenadas de un mapa de imagen es ineficiente. Las herramientas dedicadas permiten generar coordenadas precisas simplemente haciendo clic sobre la imagen.

Herramientas en línea:

  • image-map.net: Sube imágenes en el navegador y dibuja regiones rectangulares, circulares y poligonales con el ratón. Genera código HTML automáticamente
  • Maperative: Especializada en crear regiones poligonales complejas. Adición, eliminación y movimiento intuitivo de vértices
  • GIMP: Editor de imágenes con una herramienta integrada de creación de mapas de imagen en sus funciones de filtro

Mejores prácticas de diseño de coordenadas:

  • Asegura que las regiones clicables tengan al menos 44x44 píxeles (directriz de tamaño de objetivo táctil WCAG)
  • Deja espacios de 2-4 píxeles entre regiones adyacentes para prevenir clics erróneos
  • Mantén el número de vértices de polígonos al mínimo necesario. Las formas excesivamente complejas afectan el rendimiento
  • Especifica los valores de coordenadas como enteros. Los decimales causan comportamientos inesperados en algunos navegadores

Métodos de depuración: Durante el desarrollo, no puedes resaltar visualmente los elementos area solo con CSS, pero puedes leer las coords de los elementos area con JavaScript y dibujar visualizaciones superpuestas en un Canvas. Además, al pasar el cursor sobre los elementos area en las herramientas de desarrollo del navegador, se resalta la región correspondiente.

Desafíos del diseño responsivo - La mayor debilidad de los mapas de imagen

El mayor problema de los mapas de imagen HTML es que las coordenadas son valores absolutos en píxeles, por lo que las regiones se desalinean cuando cambia el tamaño de la imagen. En el desarrollo web moderno donde el diseño responsivo es estándar, esta limitación es crítica.

Ejemplo concreto: Si la imagen original es de 800x600 píxeles con una región rectangular definida como coords="200,150,400,300", y la imagen se muestra a 400x300 píxeles debido al ancho de pantalla, las coordenadas permanecen en 200,150,400,300, causando que la región clicable se extienda más allá de la esquina inferior derecha de la imagen.

Transformación dinámica de coordenadas con JavaScript:

function resizeImageMap() {
const img = document.querySelector('img[usemap]');
const naturalWidth = img.naturalWidth;
const displayWidth = img.clientWidth;
const scale = displayWidth / naturalWidth;
const areas = document.querySelectorAll('area');
areas.forEach(area => {
const original = area.dataset.originalCoords.split(',');
const scaled = original.map(c => Math.round(c * scale));
area.coords = scaled.join(',');
});
}

Este enfoque almacena las coordenadas originales en un atributo data-original-coords y las recalcula basándose en la proporción de escala cuando la imagen cambia de tamaño. Usa ResizeObserver para monitorear cambios en el tamaño de la imagen y activar el recálculo.

Opciones de bibliotecas: image-map-resizer (plugin jQuery) y RWD-Image-Maps proporcionan redimensionamiento automático de coordenadas, pero ambos tienen mantenimiento estancado. Para nuevos proyectos, se recomiendan las alternativas basadas en SVG descritas a continuación.

Alternativa moderna con SVG - Responsiva e interactiva

SVG (Scalable Vector Graphics) permite la funcionalidad de mapas de imagen de forma responsiva y accesible. Al ser basado en vectores, SVG mantiene la precisión de coordenadas en cualquier tamaño.

Enfoque de superposición SVG:

<div class="map-container" style="position: relative;">
<img src="floor-plan.jpg" alt="Plano de planta">
<svg viewBox="0 0 800 600" style="position: absolute; inset: 0; width: 100%; height: 100%;">
<a href="/room-a">
<rect x="50" y="30" width="200" height="150" fill="transparent" class="hotspot">
<title>Sala de reuniones A</title>
</rect>
</a>
<a href="/lounge">
<circle cx="500" cy="300" r="60" fill="transparent" class="hotspot">
<title>Sala de descanso</title>
</circle>
</a>
</svg>
</div>

Ventajas del enfoque SVG:

  • viewBox adapta automáticamente el sistema de coordenadas al tamaño de la imagen, eliminando problemas de responsividad
  • Se pueden aplicar libremente efectos CSS de hover (fill, opacity, stroke)
  • Las transiciones y animaciones CSS permiten interacciones fluidas
  • Los elementos <title> incorporan información de accesibilidad directamente
  • Funciona completamente sin JavaScript

CSS para efecto hover:

.hotspot { transition: fill 0.2s, opacity 0.2s; cursor: pointer; }
.hotspot:hover { fill: rgba(59, 130, 246, 0.3); }
.hotspot:focus { outline: 2px solid #3b82f6; outline-offset: 2px; }

Alternativas con CSS Grid y Flexbox - Técnicas de división de imagen

Dividir físicamente una imagen y organizar los mosaicos con CSS Grid o Flexbox es otra alternativa efectiva a los mapas de imagen. Este enfoque funciona particularmente bien cuando todas las regiones son rectangulares.

Implementación con CSS Grid:

<div class="image-grid">
<a href="/section-1" class="grid-cell" style="grid-area: 1/1/2/3;">
<span class="sr-only">Sección 1</span>
</a>
<a href="/section-2" class="grid-cell" style="grid-area: 1/3/3/4;">
<span class="sr-only">Sección 2</span>
</a>
</div>

Establece la imagen de fondo en .image-grid y coloca elementos de enlace transparentes como celdas de cuadrícula. El grid-area de cada celda define su región, y CSS Grid maneja automáticamente el comportamiento responsivo.

Enfoque de corte de imagen: Divide la imagen en múltiples mosaicos, cada uno colocado como elementos individuales <img> o <a>. Usa la función de corte de Photoshop o el método extract() de Sharp para dividir imágenes. Este enfoque es práctico en entornos HTTP/2 donde la sobrecarga de múltiples solicitudes es mínima.

CSS clip-path para formas irregulares: Cuando se necesitan formas no rectangulares, clip-path: polygon() puede recortar el área visible de cada elemento de enlace en formas irregulares. Se admiten valores porcentuales, facilitando la adaptación responsiva. Sin embargo, las coordenadas deben diseñarse cuidadosamente para asegurar que los límites de regiones adyacentes se alineen con precisión.

Accesibilidad y soluciones óptimas por caso de uso - Criterios de selección tecnológica

Al elegir un método de implementación de mapa de imagen, basa tu decisión en los requisitos de accesibilidad y las especificidades del caso de uso. Cada tecnología tiene fortalezas y debilidades sin una solución universal.

Requisitos de accesibilidad:

  • Siempre establece texto alternativo (alt o aria-label) para todas las regiones clicables
  • Verifica que todas las regiones sean accesibles mediante navegación por teclado (tecla Tab)
  • Muestra indicadores de foco claros (controla con :focus-visible en el enfoque SVG)
  • Prueba que los lectores de pantalla transmitan el propósito de la región y la posición actual
  • Confirma que las áreas de toque en dispositivos táctiles sean suficientemente grandes (mínimo 44x44 píxeles CSS)

Tecnología recomendada por caso de uso:

  • Enlaces rectangulares simples: CSS Grid + elementos de enlace transparentes. Lo más simple y mantenible
  • Puntos calientes de forma irregular: Superposición SVG. Mejor soporte responsivo y flexibilidad de interacción
  • Mantenimiento de sistemas heredados: Mapa de imagen HTML existente + redimensionamiento JavaScript. Cambios mínimos requeridos
  • Mapas interactivos: Leaflet.js o Mapbox GL JS. Cuando se necesita zoom, desplazamiento y control de capas
  • Visualización de datos: D3.js + SVG. Cuando se requiere generación de regiones basada en datos dinámicos

Comparación de rendimiento: Los mapas de imagen HTML tienen menos elementos DOM y son los más ligeros. La superposición SVG es moderada. El enfoque CSS Grid aumenta los nodos DOM con muchas regiones, pero dentro del uso típico (menos de 50 regiones), las diferencias de rendimiento son insignificantes.

Artículos relacionados

Accesibilidad de imágenes - Cómo escribir texto alt y estándares de contraste

Aprende el manejo adecuado de imágenes para la accesibilidad web, incluyendo reglas de escritura de texto alt, tratamiento de imágenes decorativas y requisitos de relación de contraste.

Guía de implementación de imágenes responsivas - Guía completa de srcset, sizes y el elemento picture

Guía completa de implementación de imágenes responsivas. Cubre el atributo srcset, el atributo sizes, la dirección artística con el elemento picture y la generación automatizada en el pipeline de construcción.

Fundamentos de SVG y uso práctico - De los conceptos vectoriales a la animación

Guía completa de SVG desde la estructura básica hasta aplicaciones prácticas. Aprende rutas, formas, texto, filtros, implementación de animaciones y técnicas de optimización.

Guía de implementación de imágenes para modo oscuro - Cambio con elemento picture y CSS

Aprende a implementar imágenes optimizadas para modo oscuro. Cubre el atributo media del elemento picture, CSS prefers-color-scheme, inversión de color SVG y otras técnicas prácticas.

Implementación de sliders de comparación antes/después - Diseño y optimización de UI

Construye sliders de comparación de imágenes antes/después con HTML, CSS y JavaScript. Cubre diseño responsivo, soporte táctil, accesibilidad y técnicas de optimización de rendimiento.

Incrustar imágenes con Data URI - Mecánica de codificación Base64 y mejores prácticas

Aprende cómo el esquema Data URI incrusta imágenes directamente en HTML/CSS. Comprende la mecánica de codificación Base64, el impacto en el rendimiento, los casos de uso apropiados y cuándo evitar imágenes en línea.

Términos relacionados