Hover-Effekte auf unregelmäßige Polygone in CSS

8

Ich frage mich, wie man Hover-Effekte für eine Karte, die dieses Bild .

Wenn jeder Distrikt (oder Abschnitt) per Mausklick / berührt / angeklickt wird, muss ich die Farbe ändern, ohne einen anderen Bereich zu beeinflussen. Die Grenzen in jedem Abschnitt müssen für das Bild repräsentativ sein und dürfen keine Quadrate sein. Die Lösung kann keine Leinwand verwenden, da die Seite, an der ich arbeite, in älteren Browsern verwendbar sein muss (ich bin persönlich entkernt.)

Idealerweise möchte ich dies mit CSS tun, ohne zu viel JavaScript oder viele Bilder zu verwenden. Hat das schon mal jemand gemacht?

Bearbeiten: Ich weiß, dass Leute das <area> -Tag vorschlagen, aber AFAIK, akzeptiert nicht die Pseudo-Klasse: hover.

Edit 2: Ich könnte das verwenden: Ссылка

    
Will Morgan 23.09.2010, 09:25
quelle

4 Antworten

7

Noch eine Selbstantwort ...

Vor ein paar Monaten stieß ich auf eine Bibliothek namens Raphael JS - Ссылка . Für diejenigen von Ihnen, die nicht damit vertraut sind, ist es in erster Linie eine SVG DOM-Bibliothek. Wenn Sie etwas über SVG wissen, werden Sie wissen, dass IE es nicht unterstützt, aber es unterstützt VML. Raphael kümmert sich auch darum. Super, oder?

Wie auch immer, am Ende habe ich die AI-Datei für die Map als SVG-Datei gespeichert und die Pfade in einen JSON-Block importiert, was im Grunde dasselbe ist wie dieser Code: Ссылка

Das einzige Problem, auf das ich gestoßen bin:

  • Ich wollte, dass der Kartenhintergrund transparent ist. Die Füllung wurde auf "transparent" gesetzt, während die Sektion "mouseover" akzeptiert wurde, die in Firefox funktioniert hat. Im IE ist dies jedoch fehlgeschlagen. Stattdessen entschied ich mich dafür, den Pfad mit Weiß zu füllen und dann die Deckkraft auf 0,01 zu setzen. Danach duplizierte ich den Pfad und füllte ihn nicht, um den Rahmen zu erstellen.
Will Morgan 24.09.2010, 15:40
quelle
0

Sie können HTML <area> Tag

verwenden     
antyrat 23.09.2010 09:30
quelle
0

Wenn Sie jQuery verwenden, können Sie das maphilight-Plugin verwenden. dokumentiert in Ссылка und erhältlich bei github unter Ссылка

    
isapir 30.11.2013 01:29
quelle
0

Ich sehe, was das Problem hier ist: Eine Weltkarte wie gewohnt zu machen, ist eine ziemliche Last. Wenn ich es richtig verstanden habe, möchte ich ein territory map Bild haben und Hover-Effekte einfügen, damit der Hover-Bereich Ländergrenzen genau entspricht. SVG kann für die Karte verwendet werden (der Zeichnungsteil ist bereits fertig), aber das Problem ist, wie man HTML-Bereichskarte unter Verwendung von SVG-Kartenkoordinaten erzeugt. Es gibt eine Lösung (ich habe es ausprobiert, sieht gut aus zumindest mit der Demo zur Verfügung gestellt), die SVG in Raphael übersetzt (generiert die Coords) mit PHP. Aber wieder brauchst du raphael.js dafür ... nun, wenn du deine Meinung änderst: Ссылка . Und wenn Sie mit Raphael nicht vertraut sind, wird es eine Weile dauern, sich daran zu gewöhnen, Dokumentation ist nicht so gut - für mich -.

Bearbeiten: Ich kann bestätigen, dass die Übersetzung von SVG- & gt; rapahel.js funktioniert, aber SVG-Dateien müssen angepasst werden. Für das, was ich in dem SVG-Beispiel in SVG2Raphael sehe, wurden die Dateien mit Adobe Illustrator erstellt. Ich habe es mit SVG (normal) von Inkscape versucht und es hat nicht richtig funktioniert, aber ich konnte die Probleme beheben, zum Beispiel:

  1. svg2rafael übersetzt nicht Inkscape generiert <path style="fill:#ff0000" ...></path> (setzt fill="none" !!! so dass das Ergebnis unsichtbar ist, aber korrekt übersetzt wird <path fill="#ff0000" ...></path> Scheint so, als würde alles in style="".
  2. svg2raphael liest die Ausrichtungen von Inkscape SVG falsch, Sie müssen also entweder die Illustration in Inkscape verschieben oder die SVG-Datei mit dem Texteditor bearbeiten und den M-Wert auf M0,0 ändern.
  3. svg2rafael kann mehrere SVG-Elemente übersetzen, schaut aber auf das Haupt-Tag, das Inkscape generiert, um Gruppen von Illustrationen auszurichten, manchmal bewegt sich die ganze Illustration vom Render-Bereich weg und Sie sehen nichts. Hoffe, das hilft!

Edit 2: Sie können Inkscapes style="" zum Erstellen von CSS-Regeln verwenden, die auf SVG angewendet werden. Das funktioniert großartig. ang behält den Stil außerhalb von SVG / Raphael!

    
aesede 22.01.2014 17:40
quelle

Tags und Links