Ich habe eine vorhandene Imagemap in einem ansprechenden HTML-Layout. Die Bilder werden entsprechend der Browsergröße skaliert, aber die Bildkoordinaten sind offensichtlich feste Pixelgrößen. Welche Optionen habe ich, um die Größe der Bildkartenkoordinaten zu ändern?
145
Antworten:
Für reaktionsschnelle Imagemaps benötigen Sie ein Plugin:
https://github.com/stowball/jQuery-rwdImageMaps (nicht mehr gepflegt)
Oder
https://github.com/davidjbradshaw/imagemap-resizer
http://www.howtocreate.co.uk/tutorials/html/imagemaps
Und auch diese Seite zum Testen, ob Browser implementieren
http://home.comcast.net/~urbanjost/IMG/resizeimg3.html
quelle
Sie können auch svg anstelle einer Imagemap verwenden. ;)
Es gibt ein Tutorial dazu.
quelle
Responsive Image Maps jQuery Plugin von Matt Stow
quelle
$(window).trigger('resize');
window
in diesem Fall das). Viel Glück.Ich bin auf eine Lösung gestoßen, die überhaupt keine Imagemaps verwendet, sondern Ankertags, die absolut über dem Bild positioniert sind. Der einzige Nachteil wäre, dass der Hotspot rechteckig sein müsste, aber das Plus ist, dass diese Lösung nicht auf Javascript basiert, sondern nur auf CSS. Es gibt eine Website, auf der Sie den HTML-Code für die Anker generieren können: http://www.zaneray.com/responsive-image-map/
Ich habe das Bild und die generierten Ankertags in ein relativ positioniertes div-Tag eingefügt und alles funktionierte perfekt bei der Fenstergröße und auf meinem Handy.
quelle
Ich habe einen No-JS-Weg gefunden, um dies zu beheben, wenn Sie mit rechteckigen Trefferbereichen einverstanden sind.
Stellen Sie zunächst sicher, dass sich Ihr Bild in einem Div befindet, der relativ positioniert ist. Fügen Sie dann das Bild in dieses Div ein, was bedeutet, dass es den gesamten Platz im Div einnimmt. Fügen Sie schließlich absolut positionierte Divs unter dem Bild innerhalb des Hauptdivs hinzu und verwenden Sie Prozentsätze für oben, links, Breite und Höhe, um den Link-Trefferbereichen die gewünschte Größe und Position zu geben.
Ich finde es am einfachsten, dem Div eine schwarze Hintergrundfarbe zu geben (idealerweise mit etwas Alpha-Fading, damit Sie den verknüpften Inhalt darunter sehen können), wenn Sie zum ersten Mal arbeiten, und einen Code-Inspektor in Ihrem Browser zu verwenden, um die Prozentsätze in Echtzeit anzupassen , damit Sie es genau richtig machen können.
Hier ist die Grundskizze, mit der Sie arbeiten können. Indem Sie alles mit Prozentsätzen ausführen, stellen Sie sicher, dass alle Elemente dieselbe relative Größe und Position wie das Bild haben.
Verwenden Sie diesen Code mit Ihrem Codeinspektor in Chrome oder einem Browser Ihrer Wahl und passen Sie die Prozentsätze an (genauer gesagt können Sie Dezimalprozentsätze verwenden), bis die Felder genau richtig sind. Wählen Sie auch
background-color
aus,transparent
wann Sie es verwenden möchten, da Ihre Trefferbereiche unsichtbar sein sollen.quelle
David Bradshaw hat eine nette kleine Bibliothek geschrieben, die dieses Problem löst. Es kann mit oder ohne jQuery verwendet werden.
Verfügbar hier: https://github.com/davidjbradshaw/imagemap-resizer
quelle
Die folgende Methode funktioniert perfekt für mich. Hier ist meine vollständige Implementierung:
quelle
Arbeiten für mich (denken Sie daran, 3 Dinge im Code zu ändern):
vorherige Breite (Originalgröße des Bildes)
map_ID (ID Ihrer Imagemap)
img_ID (ID Ihres Bildes)
HTML:
Javascript:
JSFiddle: http://jsfiddle.net/p7EyT/154/
quelle
Ich stoße auf die gleiche Anforderung, bei der ich eine reaktionsschnelle Imagemap anzeigen möchte, deren Größe sich mit jeder Bildschirmgröße ändern lässt. Wichtig ist, dass ich diese Koordinaten hervorheben möchte .
Also habe ich viele Bibliotheken ausprobiert, deren Größe die Koordinaten je nach Bildschirmgröße und Ereignis ändern kann. Und ich habe die beste Lösung (jquery.imagemapster.min.js), die mit fast allen Browsern gut funktioniert. Außerdem habe ich es in Summer Plgin integriert, die eine Imagemap erstellen.
Hoffe es jemandem helfen.
quelle
http://home.comcast.net/~urbanjost/semaphore.html ist die oberste Seite der Diskussion und enthält Links zu einer JavaScript-basierten Lösung des Problems. Ich habe eine Mitteilung erhalten, dass HTML in Zukunft prozentuale Einheiten unterstützen wird, aber ich habe seit einiger Zeit keine Fortschritte mehr gesehen (es ist wahrscheinlich über ein Jahr her, seit ich gehört habe, dass Unterstützung bevorsteht), also ist die Problemumgehung wahrscheinlich einen Blick wert, wenn Sie mit JavaScript / ECMAScript vertraut sind.
quelle
Schauen Sie sich das Image-Map- Plugin auf Github an. Es funktioniert sowohl mit Vanilla JavaScript als auch als jQuery-Plugin.
Schauen Sie sich die Demo an .
quelle
Es kommt darauf an, dass Sie jQuery verwenden können, um die Bereiche proportional anzupassen, denke ich. Warum benutzt du übrigens eine Imagemap? Können Sie keine skalierenden Divs oder andere Elemente dafür verwenden?
quelle
Für diejenigen, die nicht auf JavaScript zurückgreifen möchten, ist hier ein Beispiel für das Schneiden von Bildern:
http://codepen.io/anon/pen/cbzrK
Wenn Sie das Fenster skalieren, wird das Clownbild entsprechend skaliert, und wenn dies der Fall ist, bleibt die Nase des Clowns mit einem Hyperlink verbunden.
quelle
Ähnlich wie Orland's Antwort hier: https://stackoverflow.com/a/32870380/462781
Kombiniert mit Chris 'Code hier: https://stackoverflow.com/a/12121309/462781
Wenn die Bereiche in ein Raster passen, können Sie die Bereiche mit transparenten Bildern überlagern, wobei eine Breite in% verwendet wird, die das Seitenverhältnis beibehält.
Sie können eine Marge in% verwenden. Zusätzlich können "Space" -Bilder in einem Div der 3. Ebene nebeneinander platziert werden.
quelle
Aus irgendeinem Grund hat keine dieser Lösungen für mich funktioniert. Ich hatte den besten Erfolg mit Transformationen.
quelle
Reaktionsbreite && Höhe
quelle