vue放大缩小div_vue 放大缩小 svg 图形(原理类似整个列表更新)

本文介绍了如何在Vue项目中结合Element-UI实现SVG图形的放大和缩小功能。通过更新SVG站台坐标并利用Vue的数据绑定,实现了点击按钮时图形尺寸的变化。关键在于正确更新数据列表以触发Vue的视图更新。
摘要由CSDN通过智能技术生成

原料 :vue+element-ui+svg

目的:让svg 图形在点击按钮后放大和缩小

html

style="fill:#7daf7d;stroke:#b5acac;stroke-width:2"/>

1

script

//stations: 需要绘制的站台

export default {

name: 'svgMap',

data() {

return {

stations:[ {num:1,x:50,y:20,w:20,h:40},{x:75,y:20,w:20,h:40},{x:100,y:20,w:20,h:40},

{x:125,y:20,w:20,h:40},{x:150,y:20,w:20,h:40},{x:175,y:20,w:20,h:40},

{x:200,y:20,w:20,h:40},{x:225,y:20,w:20,h:40}]

}

},

methods: {

zoomin(){//放大

this.stations = this.draw(this.stations,1.1);

},

zoomout(){//缩小

this.stations = this.draw(this.stations,0.9);//同时更新站台信息,才会更新页面

},

draw(pointArray,factor){//根据变化倍数更新svg的坐标

var newPointArray = [];

for(var i=0;i

var point = {};

point.x = pointArray[i].x*factor;

point.y = pointArray[i].y*factor;

point.w = pointArray[i].w*factor;

point.h = pointArray[i].h*factor;

newPointArray.push(point);

}

return newPointArray;

}

}

}

注意

直接更新vue的数据列表,页面的数据是不会更新的。需要一起同时更新,才会更新页面数据

以下是不会更新页面的写法

for(var i=0;i

this.stations[i].x = this.station[i].x*factor

this.stations[i].y = this.station[i].y*factor

this.stations[i].w = this.station[i].w*factor

this.stations[i].h = this.station[i].h*factor

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值