|
|
//页面加载完成之后的操作
|
|
window.onload=function(){
|
|
|
|
let tuoZhuaiState=0; //1表示可以拖拽 0表示不可以拖拽
|
|
let svg=document.getElementById('mySvg');
|
|
|
|
//viewbox的初始大小
|
|
let viewBox='';
|
|
|
|
//viewBOX的初始大小
|
|
let ChuShiDaXiaoX=0;
|
|
let ChuShiDaXiaoY=0;
|
|
|
|
//viewbox的初始 x y
|
|
let YuanDianX = 0;
|
|
let YuanDianY = 0;
|
|
|
|
console.log()
|
|
let multiple = $('#mySvg')[0].clientHeight/$('#mySvg')[0].clientWidth;
|
|
|
|
//存储viewbox变化之后的 x y
|
|
let WeiZhiXinXiX = 0;
|
|
let WeiZhiXinXiY = 0;
|
|
|
|
//鼠标按下之后的鼠标位置 x y
|
|
let mouseInit={
|
|
x:0,
|
|
y:0
|
|
};
|
|
|
|
//鼠标按下之后存储的viewbox的 x y 信息
|
|
let startWeiZhi={
|
|
x:0,
|
|
y:0
|
|
};
|
|
|
|
console.log()
|
|
console.log()
|
|
//初始化位置
|
|
function initLocal(){
|
|
//把viewbox的初始化大小存在变量中
|
|
ChuShiDaXiaoX=parseInt($('#mySvg')[0].clientWidth);
|
|
ChuShiDaXiaoY=parseInt($('#mySvg')[0].clientHeight);
|
|
|
|
//根据svg的大小确定viewbox的大小
|
|
viewBox=`0 0 ${parseInt($('#mySvg')[0].clientWidth)} ${parseInt($('#mySvg')[0].clientHeight)}`;
|
|
svg.setAttribute('viewBox',viewBox)
|
|
}
|
|
initLocal();
|
|
|
|
|
|
|
|
//鼠标按下事件 可以进行拖拽
|
|
$('#mySvg').on('mousedown',function(e){
|
|
tuoZhuaiState=1;
|
|
mouseInit.x=e.offsetX*(ChuShiDaXiaoX / $('#mySvg')[0].clientWidth);
|
|
mouseInit.y=e.offsetY*(ChuShiDaXiaoY / $('#mySvg')[0].clientHeight);
|
|
startWeiZhi.x=WeiZhiXinXiX;
|
|
startWeiZhi.y=WeiZhiXinXiY;
|
|
})
|
|
|
|
//鼠标悬浮事件,对svg的viewbox进行移动操作
|
|
$('#mySvg').on('mousemove',function(e){
|
|
if(tuoZhuaiState==1){
|
|
YuanDianX =mouseInit.x - e.offsetX * (ChuShiDaXiaoX / $('#mySvg')[0].clientWidth) + startWeiZhi.x;
|
|
YuanDianY = mouseInit.y - e.offsetY * (ChuShiDaXiaoY / $('#mySvg')[0].clientHeight) + startWeiZhi.y;
|
|
viewBox=`${YuanDianX} ${YuanDianY} ${ChuShiDaXiaoX} ${ChuShiDaXiaoY}`;
|
|
WeiZhiXinXiX=YuanDianX;
|
|
WeiZhiXinXiY=YuanDianY;
|
|
|
|
svg.setAttribute('viewBox',viewBox)
|
|
}
|
|
})
|
|
|
|
$('#mySvg').on('mouseout',function(e){
|
|
tuoZhuaiState=0
|
|
})
|
|
|
|
|
|
//鼠标抬起事件,取消拖拽
|
|
$('#mySvg').on('mouseup',function(e){
|
|
tuoZhuaiState=0;
|
|
})
|
|
|
|
//鼠标滚轮事件
|
|
$('#mySvg').on('mousewheel',function(e){
|
|
console.log(e)
|
|
if(e.originalEvent.wheelDelta>0){
|
|
console.log(multiple)
|
|
ChuShiDaXiaoX-=18;
|
|
ChuShiDaXiaoY=multiple*ChuShiDaXiaoX;
|
|
viewBox=`${YuanDianX+=2} ${YuanDianY+=2} ${ChuShiDaXiaoX} ${ChuShiDaXiaoY}`;
|
|
WeiZhiXinXiX = YuanDianX;
|
|
WeiZhiXinXiY = YuanDianY;
|
|
}else{
|
|
console.log('缩小')
|
|
ChuShiDaXiaoX+=18;
|
|
ChuShiDaXiaoY=multiple*ChuShiDaXiaoX;
|
|
viewBox=`${YuanDianX-=2} ${YuanDianY-=2} ${ChuShiDaXiaoX} ${ChuShiDaXiaoY}`;
|
|
WeiZhiXinXiX = YuanDianX;
|
|
WeiZhiXinXiY = YuanDianY;
|
|
}
|
|
svg.setAttribute('viewBox',viewBox)
|
|
})
|
|
|
|
//右键回到初始化
|
|
$('#mySvg').on('contextmenu',function(e){
|
|
e.preventDefault();
|
|
viewBox=`0 0 ${parseInt($('#mySvg')[0].clientWidth)} ${parseInt($('#mySvg')[0].clientHeight)}`;
|
|
WeiZhiXinXiX=0;
|
|
WeiZhiXinXiY=0;
|
|
YuanDianX=0;
|
|
YuanDianY=0;
|
|
ChuShiDaXiaoX=parseInt($('#mySvg')[0].clientWidth);
|
|
ChuShiDaXiaoY=parseInt($('#mySvg')[0].clientHeight);
|
|
svg.setAttribute('viewBox',viewBox)
|
|
})
|
|
}
|