Comment passez la souris sur une SVG rect?
Dans ce morceau de SVG (essayé dans FF 8, Safari 5.1.2, Chrome 16, le tout sur un Mac), lors du déplacement de la souris sur la barre, aucun des navigateurs détecter correctement chaque passage de la souris/événement, parfois cela fonctionne, parfois cela ne marche pas. Mais elle est compatible sur tous les navigateurs, donc c'est probablement quelque chose sur le code SVG. À l'aide de onmouseover
et onmouseout
donne le même résultat - ne fonctionne pas correctement.
Quelle serait la bonne façon de mettre en œuvre sur le vol stationnaire pour le SVG rect
angles?
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="800" height="600" version="1.1" style="display:inline">
<style type="text/css">
.bar {
fill: none;
}
.bar:hover {
fill: red;
}
</style>
<g>
<rect class="bar" x="220" y="80" width="20" height="180" stroke="black" stroke-width="1" />
</g>
</svg>
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe est que les événements de la souris ne sont pas détectés parce que le fond est "aucun", il suffit d'ajouter:
Alors qu'il fonctionne parfaitement.
fill: none; pointer-event: all;
devrait fonctionner dans la plupart des navigateurs modernes, mais IE9 et IE10 ne prend pas en chargepointer-events
. En outre, vous pouvez également définirpointer-events: fill
, Cefill
valeur est SVG n', sens de la valeur defill
ouvisibility
n'affecte pas les événements de pointeur de traitement.Une solution de contournement pour IE9 et IE10 est de mettre en CSS pour
fill: transparent
sipointer-events
n'est pas pris en charge (vous pouvez utiliser Modernizr pour détecter les fonctionnalités du navigateur).JS:
CSS:
HTML:
.bar:hover
est plus spécifique que.bar
– les styles de prendre plus de toute façon.Essayer de donner à un non-remplissage transparent.
en outre, la<style>
doit aller à l'extérieur de la<svg>
.Essayer de le faire par le biais de jQuery :
Ou alternativement :