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」。 –