了解safari SVG重绘错误修复。

时间:2016-08-27 23:00:50

标签: javascript svg snap.svg

我刚刚通过 THIS snap sbg演示,我遇到了以下几行代码:

var flag,
    len = Snap.path.getTotalLength(pth.attr("d"));
Snap.animate(0, len, function (l) {
    // Safari bug workaround: forcing redraw
    g.attr({width: 100 + (flag = !flag ? 1e-5 : 0) + "%"});
    //
    var dot = pth.getPointAtLength(l);
    flight.attr({
        d: pth.getSubpath(0, l)
    });
    pln.attr({
        transform: "t" + [dot.x, dot.y] +
                   "r" + (dot.alpha - 90)
    });
    gr.attr({
        transform: getShift(dot)
    });
}, 10000);

现在我不太了解下面的代码行:

g.attr({width: 100 + (flag = !flag ? 1e-5 : 0) + "%"});

究竟是什么1e-5?有人可以探索吗?

2 个答案:

答案 0 :(得分:1)

我不熟悉Snap,但似乎代码正在将每帧的宽度属性从100%更改为100.00001%,从而导致重绘。 1e-5,如评论中所记载的是使用科学记数法为实数编写的数字,并且等于10 ^ -5 = 0.00001。

答案 1 :(得分:1)

flag = (!flag ? 1e-5 : 0) + "%"

与:

相同
if(!flag) {
    flag = 0.00001; //1e-5 is the scientific notation for 1^-5
} else {
    flag = 0;
}

flag = flag + "%";