Kurs HTML

Lekcja 6.4: Mapy obrazkowe (map, area)

Strona główna > Rozdział 6: Obrazki > Mapy obrazkowe (map, area)

Czym są mapy obrazkowe?

Mapy obrazkowe (image maps) w HTML pozwalają na zdefiniowanie na jednym obrazku wielu klikalnych obszarów, z których każdy może prowadzić do innego linku. Zamiast czynić cały obrazek jednym linkiem, możemy podzielić go na "gorące strefy" (hotspots), które reagują na kliknięcia.

Jest to przydatne na przykład w mapach geograficznych (kliknięcie regionu prowadzi do informacji o nim), schematach organizacyjnych, infografikach czy niestandardowych interfejsach użytkownika.

Do tworzenia map obrazkowych używa się trzech głównych elementów:

Krok 1: Obrazek z atrybutem `usemap`

Najpierw wstawiamy obrazek za pomocą znacznika <img>. Kluczowe jest dodanie atrybutu usemap. Jego wartość musi zaczynać się od znaku #, po którym następuje nazwa mapy, którą zdefiniujemy w kolejnym kroku.

<img src="planety.jpg" alt="Układ Słoneczny" width="600" height="300" usemap="#mapa-planet">

Krok 2: Definicja mapy za pomocą <map>

Następnie tworzymy znacznik <map>. Musi on posiadać atrybut name, którego wartość jest identyczna jak wartość atrybutu usemap w obrazku (ale bez znaku #).

<map name="mapa-planet">
  <!-- Tutaj znajdą się definicje obszarów (<area>) -->
</map>

Znacznik <map> jest kontenerem dla definicji klikalnych obszarów.

Krok 3: Definiowanie obszarów za pomocą <area>

Wewnątrz znacznika <map> umieszczamy jeden lub więcej znaczników <area>. Każdy <area> definiuje jeden klikalny obszar na obrazku. Znacznik <area> jest pusty i wymaga kilku atrybutów:

Przykład kompletnej mapy obrazkowej:

<!-- Obrazek z mapą -->
<img src="ksztalty.png" alt="Kolorowe kształty geometryczne" width="300" height="150" usemap="#mapa-ksztaltow" style="border:1px solid black;">

<!-- Definicja mapy -->
<map name="mapa-ksztaltow">
  <!-- Obszar koła -->
  <area shape="circle" coords="75,75,50" href="kolo.php" alt="Informacje o kole">
  
  <!-- Obszar prostokąta -->
  <area shape="rect" coords="180,25,280,125" href="prostokat.php" alt="Informacje o prostokącie" target="_blank" rel="noopener noreferrer">
  
  <!-- Można dodać więcej obszarów... -->
</map>

(Poniżej symulacja - obszary nie są klikalne w tym przykładzie statycznym)

Kolorowe kształty geometryczne Informacje o kole (demo) Informacje o prostokącie (demo)

Najedź myszką na obrazek powyżej, aby zobaczyć podpowiedzi (title) zdefiniowanych obszarów (w przeglądarkach, które to wspierają).

Narzędzia do tworzenia map obrazkowych

Ręczne wyznaczanie współrzędnych, zwłaszcza dla kształtów poly, może być żmudne. Istnieją narzędzia online i programy graficzne, które ułatwiają tworzenie map obrazkowych, generując gotowy kod HTML:

Dostępność i responsywność

Mapy obrazkowe mogą stanowić wyzwanie pod względem dostępności i responsywności:

Zadanie praktyczne (z rozwiązaniem)

Zadanie: Użyj dostarczonego obrazka (placeholder 300x100). Zdefiniuj na nim dwa klikalne obszary: prostokątny w lewej połowie (0-150px szerokości) i kołowy w prawej połowie (środek np. w 225,50). Oba obszary mają prowadzić do strony google.com, ale mieć różne teksty alternatywne.

Rozwiązanie:

<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <title>Mapa Obrazkowa - Zadanie</title>
</head>
<body>
    <h1>Test mapy obrazkowej</h1>
    
    <img src="https://via.placeholder.com/300x100/eee/ccc?text=Kliknij+mnie" 
         alt="Obrazek z dwoma obszarami klikalnymi" 
         width="300" 
         height="100" 
         usemap="#test-mapa" 
         style="border:1px solid black;">
         
    <map name="test-mapa">
        <!-- Lewy prostokąt -->
        <area shape="rect" 
              coords="0,0,150,100" 
              href="https://www.google.com" 
              alt="Przejdź do Google (obszar prostokątny)" 
              target="_blank" rel="noopener noreferrer">
              
        <!-- Prawe koło -->
        <area shape="circle" 
              coords="225,50,45" 
              href="https://www.google.com" 
              alt="Przejdź do Google (obszar kołowy)" 
              target="_blank" rel="noopener noreferrer">
    </map>

</body>
</html>

Dodatkowe zadania do samodzielnego wykonania:

  1. Znajdź obrazek mapy (np. Polski) i spróbuj zdefiniować klikalny obszar dla jednego województwa (używając shape="poly"). Możesz użyć generatora map online do pomocy w wyznaczeniu współrzędnych.
  2. Stwórz mapę obrazkową z trzema różnymi kształtami (rect, circle, poly), gdzie każdy prowadzi do innej strony.
  3. Przetestuj działanie atrybutu target="_blank" wewnątrz znacznika <area>.

Najczęściej zadawane pytania

Do czego służą mapy obrazkowe w HTML?

Mapy obrazkowe pozwalają zdefiniować wiele klikalnych obszarów (hotspotów) na jednym obrazku. Każdy obszar może prowadzić do innego linku, co jest przydatne np. w interaktywnych mapach czy schematach.

Jak połączyć mapę z obrazkiem?

Obrazek (<img>) musi mieć atrybut usemap="#nazwa_mapy". Znacznik <map> definiujący obszary musi mieć pasujący atrybut name="nazwa_mapy" (bez znaku #). To łączy obrazek z definicją jego mapy.

Jakie kształty obszarów można definiować?

Można definiować obszary o kształcie prostokąta (shape="rect"), koła (shape="circle") lub wielokąta (shape="poly"). Istnieje też shape="default" obejmujący cały obrazek.

Jak określić współrzędne obszaru?

Współrzędne podaje się w atrybucie coords, a ich format zależy od kształtu: "x1,y1,x2,y2" dla prostokąta, "x,y,promien" dla koła, "x1,y1,x2,y2,..." dla wielokąta. Liczone są w pikselach od lewego górnego rogu obrazka.

Czy mapy obrazkowe są responsywne?

Tradycyjne mapy obrazkowe ze stałymi współrzędnymi słabo działają na responsywnych stronach, ponieważ współrzędne nie skalują się wraz z obrazkiem. Istnieją rozwiązania JavaScript, ale często lepszą alternatywą jest SVG lub podział obrazka.