了解 safari SVG 重绘错误修复。
understanding safari SVG redraw bug fix.
我刚刚浏览了 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
到底是什么?有人可以解释吗?
我不熟悉 Snap,但似乎代码正在将每帧的宽度 属性 从 100% 更改为 100.00001%,导致重绘。 1e-5,正如评论中提到的那样,是使用科学计数法为实数编写的数字,等于 10^-5 = 0.00001。
flag = (!flag ? 1e-5 : 0) + "%"
等同于:
if(!flag) {
flag = 0.00001; //1e-5 is the scientific notation for 1^-5
} else {
flag = 0;
}
flag = flag + "%";
我刚刚浏览了 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
到底是什么?有人可以解释吗?
我不熟悉 Snap,但似乎代码正在将每帧的宽度 属性 从 100% 更改为 100.00001%,导致重绘。 1e-5,正如评论中提到的那样,是使用科学计数法为实数编写的数字,等于 10^-5 = 0.00001。
flag = (!flag ? 1e-5 : 0) + "%"
等同于:
if(!flag) {
flag = 0.00001; //1e-5 is the scientific notation for 1^-5
} else {
flag = 0;
}
flag = flag + "%";