J'ai une image map existante dans une mise en page html réactive. Les images sont mises à l'échelle en fonction de la taille du navigateur, mais les coordonnées de l'image sont évidemment des tailles de pixels fixes. Quelles options ai-je pour redimensionner les coordonnées de la carte image?
145
Réponses:
Pour les cartes d'images réactives, vous devrez utiliser un plugin:
https://github.com/stowball/jQuery-rwdImageMaps (n'est plus maintenu)
Ou
https://github.com/davidjbradshaw/imagemap-resizer
http://www.howtocreate.co.uk/tutorials/html/imagemaps
Et aussi cette page pour tester si les navigateurs implémentent
http://home.comcast.net/~urbanjost/IMG/resizeimg3.html
la source
Vous pouvez également utiliser svg au lieu d'une image map. ;)
Il existe un didacticiel expliquant comment procéder.
la source
Plugin jQuery pour images réactives par Matt Stow
la source
$(window).trigger('resize');
window
dans ce cas). Bonne chance.J'ai rencontré une solution qui n'utilise pas du tout de cartes d'image, mais plutôt des balises d'ancrage qui sont absolument positionnées sur l'image. Le seul inconvénient serait que le hotspot devrait être rectangulaire, mais le plus est que cette solution ne repose pas sur Javascript, juste CSS. Il existe un site Web que vous pouvez utiliser pour générer le code HTML des ancres: http://www.zaneray.com/responsive-image-map/
J'ai mis l'image et les balises d'ancrage générées dans une balise div relativement positionnée et tout a parfaitement fonctionné sur le redimensionnement de la fenêtre et sur mon téléphone portable.
la source
J'ai trouvé un moyen non-JS de résoudre ce problème si vous êtes d'accord avec les zones de frappe rectangulaires.
Tout d'abord, assurez-vous que votre image est dans un div qui est relativement positionné. Ensuite, placez l'image dans ce div, ce qui signifie qu'il occupera tout l'espace du div. Enfin, ajoutez des div positionnés de manière absolue sous l'image, dans le div principal, et utilisez des pourcentages pour le haut, la gauche, la largeur et la hauteur pour obtenir la taille et la position souhaitées des zones d'accès au lien.
Je trouve qu'il est plus facile de donner à la div une couleur d'arrière-plan noire (idéalement avec un peu de fondu alpha pour que vous puissiez voir le contenu lié en dessous) lorsque vous travaillez pour la première fois, et d'utiliser un inspecteur de code dans votre navigateur pour ajuster les pourcentages en temps réel , afin que vous puissiez faire les choses correctement.
Voici le plan de base avec lequel vous pouvez travailler. En faisant tout avec des pourcentages, vous vous assurez que tous les éléments conservent la même taille et la même position relatives que l'image est mise à l'échelle.
Utilisez ce code avec votre inspecteur de code dans Chrome ou le navigateur de votre choix, et ajustez les pourcentages (vous pouvez utiliser des pourcentages décimaux pour être plus précis) jusqu'à ce que les cases soient parfaites. Vous pouvez aussi choisir un
background-color
destransparent
lorsque vous êtes prêt à l' utiliser puisque vous voulez que vos zones touchées soient invisibles.la source
David Bradshaw a écrit une jolie petite bibliothèque qui résout ce problème. Il peut être utilisé avec ou sans jQuery.
Disponible ici: https://github.com/davidjbradshaw/imagemap-resizer
la source
La méthode suivante fonctionne parfaitement pour moi, voici donc ma mise en œuvre complète:
la source
Travailler pour moi (n'oubliez pas de changer 3 choses dans le code):
previousWidth (taille originale de l'image)
map_ID (identifiant de votre image map)
img_ID (identifiant de votre image)
HTML:
Javascript:
JSFiddle: http://jsfiddle.net/p7EyT/154/
la source
Je rencontre la même exigence où, je veux montrer une carte d'image réactive qui peut être redimensionnée avec n'importe quelle taille d'écran et la chose importante est, je veux mettre en évidence ces coordonnées .
J'ai donc essayé de nombreuses bibliothèques qui peuvent redimensionner les coordonnées en fonction de la taille de l'écran et de l'événement. Et j'ai la meilleure solution (jquery.imagemapster.min.js) qui fonctionne très bien avec presque tous les navigateurs. Aussi je l'ai intégré avec Summer Plgin qui crée une image map.
J'espère aider quelqu'un.
la source
http://home.comcast.net/~urbanjost/semaphore.html est la première page de la discussion, et contient en fait des liens vers une solution JavaScript au problème. J'ai reçu un avis indiquant que HTML prendra en charge les unités de pourcentage à l'avenir, mais je n'ai vu aucun progrès à ce sujet depuis un certain temps (cela fait probablement plus d'un an que j'ai entendu dire que le soutien serait à venir), donc la solution de contournement est Cela vaut probablement la peine de regarder si vous êtes à l'aise avec JavaScript / ECMAScript.
la source
Découvrez le plugin image-map sur Github. Il fonctionne à la fois avec JavaScript vanilla et en tant que plugin jQuery.
Regardez la démo .
la source
Cela dépend, vous pouvez utiliser jQuery pour ajuster les plages proportionnellement je pense. Pourquoi utilisez-vous une carte image au fait? Ne pouvez-vous pas utiliser des divs de mise à l'échelle ou d'autres éléments pour cela?
la source
Pour ceux qui ne souhaitent pas recourir à JavaScript, voici un exemple de découpage d'image:
http://codepen.io/anon/pen/cbzrK
Lorsque vous mettez à l'échelle la fenêtre, l'image du clown sera mise à l'échelle en conséquence, et quand c'est le cas, le nez du clown reste hyperlié.
la source
Similaire à la réponse d'Orland ici: https://stackoverflow.com/a/32870380/462781
Combiné avec le code de Chris ici: https://stackoverflow.com/a/12121309/462781
Si les zones s'inscrivent dans une grille, vous pouvez superposer les zones par des images transparentes en utilisant une largeur en% qui conserve leur rapport hauteur / largeur.
Vous pouvez utiliser une marge en%. De plus, les images «espace» peuvent être placées les unes à côté des autres à l'intérieur d'un div de 3e niveau.
la source
Pour une raison quelconque, aucune de ces solutions n'a fonctionné pour moi. J'ai eu le meilleur succès avec les transformations.
la source
largeur et hauteur sensibles
la source