Javascript opera中的raphaeljs鼠标事件bug?
我有非常简单的svg:只有一个矩形需要在悬停时设置动画 以下是我现在拥有的:Javascript opera中的raphaeljs鼠标事件bug?,javascript,svg,raphael,Javascript,Svg,Raphael,我有非常简单的svg:只有一个矩形需要在悬停时设置动画 以下是我现在拥有的: var paper = Raphael('paper', 50, 50); var rect = paper.rect(0, 0, 20, 20).attr({ 'width': 20, 'height': 20, 'fill': "red", 'stroke-width': 0, }).data('x', 'y'); rect.mouseover(function() {
var paper = Raphael('paper', 50, 50);
var rect = paper.rect(0, 0, 20, 20).attr({
'width': 20,
'height': 20,
'fill': "red",
'stroke-width': 0,
}).data('x', 'y');
rect.mouseover(function() {
this.toFront();
this.animate({
'transform': 's2'
}, 70);
}).mouseout(function() {
this.animate({
'transform': 's1'
}, 50);
});
看一看行动
问题是:该代码在Opera(我相信是IE)中无法正常工作,似乎mouseout事件没有启动。这是Raphael、Opera或我的代码中的某种错误吗?您需要在mouseover()和mouseout()函数中的每个.animate()调用中添加一个.stop(),因为它们在动画过程中相互干扰
rect.mouseover(function() {
this.toFront();
this.stop().animate({
'transform': 's2'
}, 70);
}).mouseout(function() {
this.stop().animate({
'transform': 's1'
}, 50);
});
也为了它的缘故,我会尽量使出和超过动画的同时。只是为了观赏。但那只是我
编辑:
显然,this.toFront()
导致Opera无法跟踪DOM元素。正如您所说,您需要toFront(),您可以通过使用$.css()来交换它,以实现相同的效果(可能)
抱歉,修复了它,因为stop()需要在webkit中的animateworks前面,但是,不幸的是,在操作中仍然不能正确工作使用toFront移动东西意味着删除元素并将其插入DOM中,此时Opera无法跟踪元素的焦点(不确定是否有说明从DOM中删除元素时焦点应该发生什么的规范)。不管怎样,这就是原因。避免使用toFront,它应该可以工作。是的,没有toFront()它工作得很好,但我有点需要它。那么,有什么解决方法吗?而不是toFront()[虽然我不确定这具体是什么作用)你可以使用我在上面编辑的东西
$(this).css('zIndex', 9999);