Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to hover over an SVG rect?

Tags:

css

hover

svg

In this piece of SVG (tried in FF 8, Safari 5.1.2, Chrome 16, all on Mac), when moving mouse over the bar, none of the browsers properly detect each on-mouse-over/out event, sometimes it works sometimes it doesnt. But it's consistent across all the browsers so it's probably something about the SVG code. Using onmouseover and onmouseout gives the same result - doesn't work properly.

What would be the correct way of implementing on hover for SVG rectangles?

<?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> 
like image 460
milan Avatar asked Feb 09 '12 09:02

milan


People also ask

How do I hover over an SVG?

The simplest way to add a mouseover effect is to use the :hover pseudo-selector in CSS, as you would with an HTML element. CSS styles can be put in a separate document or inside a <style> tag inside the SVG itself.

How do you hover an element?

The :hover selector is used to select elements when you mouse over them. Tip: The :hover selector can be used on all elements, not only on links. Tip: Use the :link selector to style links to unvisited pages, the :visited selector to style links to visited pages, and the :active selector to style the active link.

Does hover work on Div?

To display div element using CSS on hover a tag: First, set the div element invisible i.e display:none;. By using the adjacent sibling selector and hover on a tag to display the div element.

What is rect in SVG?

<rect> The <rect> element is a basic SVG shape that draws rectangles, defined by their position, width, and height. The rectangles may have their corners rounded.


1 Answers

What's happening is that the mouse events are not detected because the fill is 'none', just add:

.bar {     fill: none;     pointer-events: all; } 

Then it works just fine.

like image 59
Erik Dahlström Avatar answered Sep 23 '22 00:09

Erik Dahlström