我是靠谱客的博主 谨慎未来,最近开发中收集的这篇文章主要介绍svg缩放移动、移动轨迹追溯_简单使用transform: translate属性实现SVG的拖拽移动与缩放...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

简单使用transform: translate属性实现SVG的拖拽移动与缩放

JS代码load()函数鼠标按下事件释放加载在window的鼠标松开事件鼠标滑动事件滚轮滚动事件

HTML代码

onmousewheel="mousewheel(event)"

οnmοusedοwn="mousedown(event)"

οnmοusemοve="mousemove(event)">

JS代码

load()函数

初始化需要用到的数据

function load(){

this.mousePos={x:0,y:0}

this.offsetX=0

this.offsetY=0

this.radio=1

this.dragging=false

}

鼠标按下事件

鼠标按下svg获取鼠标按下点,当前位置

function mousedown(e) {

const event = window.event || e

event.preventDefault()

let nx = event.clientX

let ny = event.clientY

this.mousePos.x = nx - this.offsetX

this.mousePos.y = ny - this.offsetY

this.dragging=true

window.addEventListener("mouseup",this.mouseupFunction)

}

释放加载在window的鼠标松开事件

鼠标松开事件需要在全局中都要监听到,所以需要在鼠标按下后添加到window上

function mouseupFunction(){

this.dragging=false

window.removeEventListener("mouseup",this.mouseupFunction)

}

鼠标滑动事件

鼠标按下滑动需要移动svg,还需要判断是否是鼠标按下

function mousemove(e) {

if(this.dragging) {

const e = window.event || e

e.preventDefault()

let nx = event.clientX

let ny = event.clientY

let offsetX = nx - this.mousePos.x

let offsetY = ny - this.mousePos.y

this.offsetX = offsetX

this.offsetY = offsetY

let svg = document.getElementById("svg")

svg.style.transform = `translate(${offsetX}px, ${offsetY}px) scale(${this.radio})`

}

}

滚轮滚动事件

鼠标滚动对svg放大缩小

function mousewheel(e) {

const event = window.event || e

e.preventDefault()

let newRadio = this.radio

if(e.deltaY > 0) {

newRadio += 0.1

} else {

newRadio -= 0.1

}

if(newRadio <= 0.1) {

return

}

let svg = document.getElementById('svg')

svg.style.transform = `translate(${this.offsetX}px, ${this.offsetY}px) scale(${newRadio})`

this.radio = newRadio

}

最后

以上就是谨慎未来为你收集整理的svg缩放移动、移动轨迹追溯_简单使用transform: translate属性实现SVG的拖拽移动与缩放...的全部内容,希望文章能够帮你解决svg缩放移动、移动轨迹追溯_简单使用transform: translate属性实现SVG的拖拽移动与缩放...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部