2012-10-16 9 views
16

Mam mapę z elementami tekstowymi SVG, aby nazwać lokalizacje. Chcę, aby lokalizacje (kształty) były klikalne i są, ale ponieważ elementy tekstowe znajdują się na nich, jeśli ktoś unosi się nad elementem tekstowym i klika, to nic się nie dzieje, ponieważ kształt nie został kliknięty: element tekstowy był . Jak mogę to zrobić, aby po kliknięciu elementu tekstowego kliknięcie przechodziło "przez" i do kształtu?Jak uczynić element tekstowy SVG "zdolnym do kliknięcia"?

Odpowiedz

41

Mozilla wprowadziła właściwości CSS w tym celu o nazwie pointer-events. Pierwotnie był on ograniczony do kształtów SVG, ale teraz jest obsługiwana w większości elementów DOM w nowoczesnych przeglądarek:

span.label { pointer-events: none; } 

Odpowiedź na to pytanie ma kilka dobrych informacji na uzyskując taki sam wynik w starym IE:

css 'pointer-events' property alternative for IE

+0

COOL, nie wiedziałem, że działało z SVG, tylko "regularne" elementy – Cystack

+1

@Cystack "właściwość pointer-events" była częścią SVG od samego początku (i nie, nie została ona wprowadzona przez Mozillę - chociaż Mozilla była pionierem wykorzystania tej właściwości poza svg). Jako pierwszy link jest napisane "Ostrzeżenie: użycie wskaźników-zdarzeń w CSS dla elementów innych niż SVG jest eksperymentalne". –

+0

Ponadto, wskaźniki-zdarzenia działają w treści SVG w IE9 + AFAIK. –

5

dodać css do tekstu:

pointer-events: none; 
2

Jeśli istnieje możliwość pogrupowania kształtów mapy z tekstem wewnątrz elementu "<g>", można dołączyć kliknięcie do grupy, a nie do kształtu. Takie postępowanie daje dodatkową korzyść, że transformacje zastosowane w grupie będą miały zastosowanie zarówno do kształtu, jak i tekstu. Jeśli grupowanie nie jest możliwe, to zgadzam się, że poprzednia odpowiedź jest zdecydowanie najlepsza. Zasadniczo to, co się dzieje, jest następujące: większość ludzi wizualizuje kliknięcie przenikające w dół przez twój indeks Z, ale nie działa w ten sposób. Kliknięcie przechodzi przez DOM, więc jeśli tekst nie obsługuje kliknięcia, pęcznieje do następnego elementu DOM, który jest grupą nadrzędną lub kontenerem. Trwa to w górę, dopóki nie osiągnie najwyższego elementu DOM.

Powiązane problemy