The Bruno method contains this minor issue:
If you create a rectangle over other elements, if other elements are text, then these texts cannot be selected on the web page. But it does work.
By the way, the attribute "opacity": 0 is not enough, I had to add the attribute "fill": "white" in my case.
You need to bring the object to the forefront as follows: obj.toFront (); obj is a raphael form similar to "rect", etc.
I tested it on the mouseover and mouseout event and it works.
Check out my fiddle here: fiddle reference
function withArray(x,y){ var rect = paper.rect(x, y, 100, 60).attr({ fill: "green" }); rect.text = paper.text(x+(100/2), y + 30, 'rect w/array').attr({ 'font-size': 12, "fill": "white" }); var rectover = paper.rect(x,y,100,60).attr({ fill: "white", opacity: 0 }); var myArray = paper.set(); myArray.push(rect, rect.text, rectover); myArray.mouseover(function() { var anim = Raphael.animation({ transform: ['S', 1.5, 1.5, (rect.attr("x")), (rect.attr("y"))] }, 100, "backOut", function() { }); myArray.animate(anim); }).mouseout(function() { var anim = Raphael.animation({ transform: [""] }, 50, "backOut", function() { }); myArray.stop().animate(anim); }); }