[JS]Responsive <area> dynamique

NoSmoking

Le but est de rendre les éléments HTML <area>, d'une <map>, responsive dynamiquement en s'aidant de JavaScript.

Ce qui ne va pas

Il peut nous arriver d'avoir besoin qu'une image, sur laquelle une <map> est associée, soit responsive.

On sait que l'attribut coords, des <area>, défini les coordonnées de la forme décrite par l'attribut shape et permet ainsi de positionner et dimensionner les zones interactives d'une image.

Seulement voilà les valeurs sont exprimées en pixels CSS donc ne peuvent plus forcément s'appliquer si l'image, dont elles représentent les zones d'intérêt, est elle « responsive ».

La solution est donc de recalculer ces coordonnées dynamiquement en fonction de la taille de l'image référente.

<area> en action

Redimensionnez la fenêtre du navigateur pour observer le réajustement des zones.

image mappée

Les overlays affichés sont recalculés, au redimensionnement, pour tenir compte des nouvelles coordonnées des <area>.

Code function

Observations

Mise à jour : Déc. 2022