在上一章中讲到的,我发现在使用过程中出现一些问题,他并不能对真个svg进行操作,只能对svg里面的元素进行操作,
要想操作整个svg,你得知道有哪些属性,网上都有一些简单的介绍,我在这里只说怎么解决,
svg里有一个viewBox 的元素,你修改他你会发现一些东西,viewBox = 0 0 400 400 ;
相当于这个svg的画布只有400;
viewBoxValues = svg.getAttribute('viewBox').split('');
修改viewBoxValues[0] viewBoxValues[1] 变能移动,viewBoxValues[3]变能缩放
hammertime.on("pinchin pinchout panstart panmove panend", function (ev) {
switch (ev.type) {
case "pinchin":
zoom(ev.scale);
break;
case "pinchout":
zoom(ev.scale);
break;
case "panstart":
viewBoxValues = svg.getAttribute('viewBox').split(" ");
circleX = parseInt(viewBoxValues[0]);
circleY = parseInt(viewBoxValues[1]);
// circle.setAttribute("fill","brown");
break;
case "panmove":
viewBoxValues[0] = circleX -ev.deltaX ; //ev.deltaX的值是X坐标上移动的值,加上移动之前的坐标值,即为当前的坐标值
viewBoxValues[1] =circleY - ev.deltaY;
svg.setAttribute("viewBox",viewBoxValues.join(" "));
// svg.setAttribute("y",moveY);
break;
case "panend":
// circle.setAttribute("fill","red");
break;
}
});
/**
* svg放缩
* {Float} num 放缩的倍数
*/
var boxWidth = viewBoxValues[2];
var boxHeight = viewBoxValues[2];
function zoom(num) {
viewBoxValues[2] =boxWidth /num;
svg.setAttribute("viewBox",viewBoxValues.join(" "));
}
来源:CSDN
作者:那年我七岁
链接:https://blog.csdn.net/qq_25909453/article/details/78779497