0
我刚刚通过THIS SVG动画演示,其直观,我是通过JS代码,并发现下面的代码行;`getShift`和变换如何在SVG上工作
var g = Snap();
g.attr({
viewBox: [0, 0, 800, 600]
});
Snap.load("map.svg", function (f) {
function getShift(dot) {
return "t" + (400 - dot.x) + "," + (300 - dot.y);
}
var gr = f.select("g"),
wrd = f.select("#world").attr({fill: "#fff"}),
syd = f.select("#sydney").attr({fill: "red"}),
msk = f.select("#san_francisco").attr({fill: "red"}),
pth = f.select("#flight"),
pln = f.select("#plane"),
top = g.g()
// DIFF above line of code , what is g.g();
top.attr({
mask: g.rect(100, 0, 600, 600).attr({
fill: "r(.5,.5,.25)#fff-#000"
})
});
top.add(gr);
var click = top.text(410, 310, "click!").attr({
font: "20px Source Sans Pro, sans-serif",
fill: "#fff"
});
pth.attr({
display: "none"
});
// DIFF , i am not quite understanding below line of code.
pln = gr.g(pln, pln.clone());
pln.attr({
display: "none"
});
pln[0].attr({
stroke: "#fff",
strokeWidth: 2
});
gr.attr({
transform: getShift({
x: syd.attr("cx"),
y: syd.attr("cy")
})
});
现在我的问题是关于下面的行代码:
gr.attr({
transform: getShift({
x: syd.attr("cx"),
y: syd.attr("cy")
})
});
我beleive gr
正在转换层,但我不完全理解这行代码,究竟什么是getShift
当然我也明白上面的syd
层的'cx'和'cy'属性被用来转换元素,但是这行代码如何作为一个整体工作,以及什么是getShift
?
非常感谢很多安德鲁,但我教过变换的价值永远不会包括像't'这样的字母,我的意思是在css中它通常是'transform:translate(50%,50%)',我不太了解语法,或者只是因为我是SVG新手。 –
“翻译”使用“t”来自Snap.svg库,而不是来自SVG规范本身。我发现Snap文档令人沮丧,所以我不能指出你对它的转换语法的“官方”Snap解释。然而,Snap库是由编写Raphael库的同一人编写的,虽然两个库之间存在明显差异,但也许[此信息](http://dmitrybaranovskiy.github.io/raphael/reference.html# Element.transform)来自Raphael文档将有助于解释“翻译”的“t”,“旋转”等的“r”。 –