使用 snap.svg IE 和 EDGE 网络浏览器快速悬停时使用动画缩放 in/out
Zooming in/out with animate on QUICKLY hover with snap.svg IE and EDGE web-browser
我不明白,为什么 IE 和 EDGE 有奇怪的行为。
如果您快速将鼠标移出五角星形——动画是有距离的,但在其他正常的网络浏览器中一切正常。
http://jsfiddle.net/b1Lhjo4k/
var svgElement = Snap("#svg");
var pent = svgElement.select('#pentagram-one');
var hoverover = function() {
pent.stop().animate({transform: 'r180,500,515'}, 400);
};
var hoverout = function() {
pent.stop().animate({transform: 'r0,500,515'}, 400);
};
pent.hover(hoverover, hoverout);
通过原型函数解决; ie 和 edge 现在可以正常工作了。
我没有要测试的 Edge,但我怀疑它是因为它在上一个动画完成之前开始动画时使用 Matrix/transform 插值做了一些时髦的事情(这可能是错误的,但最初的想法是看一下),或者它可能是一些奇怪的东西,因为我以前在 IE 中看到过那些非常小的数字字符串。
解决这个问题的一种方法是不让 Snap 使用浏览器矩阵值进行插值,而是自己控制它。你可以尝试一个小插件,如果你会经常使用它,像这样...
Snap.plugin( function( Snap, Element, Paper, global ) {
Element.prototype.animRotate = function( from, to, dur ) {
var el = this;
this.stop();
Snap.animate(from, to, function( val ) {
el.transform('r' + val + ',500,515')
},dur)
return this;
};
});
var pent = svgElement.select('#pentagram-one');
var hoverover = function() {
this.animRotate(0, 180, 400)
};
var hoverout = function() {
this.animRotate(180, 0, 400)
};
我不明白,为什么 IE 和 EDGE 有奇怪的行为。 如果您快速将鼠标移出五角星形——动画是有距离的,但在其他正常的网络浏览器中一切正常。 http://jsfiddle.net/b1Lhjo4k/
var svgElement = Snap("#svg");
var pent = svgElement.select('#pentagram-one');
var hoverover = function() {
pent.stop().animate({transform: 'r180,500,515'}, 400);
};
var hoverout = function() {
pent.stop().animate({transform: 'r0,500,515'}, 400);
};
pent.hover(hoverover, hoverout);
通过原型函数解决; ie 和 edge 现在可以正常工作了。
我没有要测试的 Edge,但我怀疑它是因为它在上一个动画完成之前开始动画时使用 Matrix/transform 插值做了一些时髦的事情(这可能是错误的,但最初的想法是看一下),或者它可能是一些奇怪的东西,因为我以前在 IE 中看到过那些非常小的数字字符串。
解决这个问题的一种方法是不让 Snap 使用浏览器矩阵值进行插值,而是自己控制它。你可以尝试一个小插件,如果你会经常使用它,像这样...
Snap.plugin( function( Snap, Element, Paper, global ) {
Element.prototype.animRotate = function( from, to, dur ) {
var el = this;
this.stop();
Snap.animate(from, to, function( val ) {
el.transform('r' + val + ',500,515')
},dur)
return this;
};
});
var pent = svgElement.select('#pentagram-one');
var hoverover = function() {
this.animRotate(0, 180, 400)
};
var hoverout = function() {
this.animRotate(180, 0, 400)
};