The specific usage of the Vue image drag and drop zoom component is for your reference. The specific content is as follows <doc> Image component - user zooms in and out and drags</doc> <template> <div style="width: 100%;position: relative;overflow: hidden;text-align: center;border: 1px solid #f1f2f3;"> <el-button size='mini' @click="toBIgChange" icon="el-icon-zoom-in" style="position: absolute;top: 2px ;left: 2px;z-index: 999;"></el-button> <el-button size='mini' @click="toSmallChange" icon="el-icon-zoom-out" style="position: absolute;top: 2px ;left: 40px;z-index: 999;"></el-button> <img id="img" :src="src" alt="" @mousedown.prevent="dropImage" :style="{transform:'scale('+multiples+')'}"> </div> </template> <script> export default { props: ['src'], data() { return { multiples: 1, odiv: null, } }, mounted() { this.dropImage() }, watch: src(newValue, oldValue) { this.multiples = 1 if (this.odiv !== null) { this.odiv.style.left = '0px'; this.odiv.style.top = '0px'; } }, }, methods: { toBIgChange() { if (this.multiples >= 2) { return; } this.multiples += 0.25; }, //Shrink toSmallChange() { if (this.multiples <= 1) { return; } this.multiples -= 0.25; }, // drag dropImage(e) { if (e === null) { return } this.odiv = e.target; //Get the target element //Calculate the position of the mouse relative to the element let disX = e.clientX - this.odiv.offsetLeft; let disY = e.clientY - this.odiv.offsetTop; document.onmousemove = (e) => { //Mouse pressed and moved event //Subtract the position of the mouse relative to the element from the position of the mouse to get the position of the element let left = e.clientX - disX; let top = e.clientY - disY; //Bind the element position to positionX and positionY this.positionX = top; this.positionY = left; //Move the current element this.odiv.style.left = left + 'px'; this.odiv.style.top = top + 'px'; }; document.onmouseup = (e) => { document.onmousemove = null; document.onmouseup = null; }; }, } } </script> <style scoped> img { width: 100%; position: relative; } </style> The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: How to set the default value of a MySQL field
>>: Detailed explanation of the deployment process of SEATA transaction service Docker
1. Deploy nginx service in container The centos:7...
XHTML defines three document type declarations. T...
First, download a series of things from the Alipa...
<base target=_blank> changes the target fram...
Table of contents Overview Solution 1: Closures S...
Table of contents 2. Detailed explanation 2.1. Ad...
Syntax: <marquee> …</marquee> Using th...
1. How to monitor MySQL deadlocks in production e...
Use Code Cloud to build a Git code storage wareho...
Preface The CentOS environment variable configura...
Table of contents animate() animation method Anim...
Introduction MySQL slow query log is an important...
1. Design source code Copy code The code is as fol...
Preface In the previous article Detailed Explanat...
This article example shares the specific code of ...