Detailed explanation of the use of Vue image drag and drop zoom component

Detailed explanation of the use of Vue image drag and drop zoom component

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:
  • Use vue components to realize the drag and zoom function of pictures
  • Vue implements image preview effect example (zoom in, zoom out, drag)
  • Vue implements zoom in, zoom out and drag function
  • Implementing Vue image scaling - dragging components

<<:  How to set the default value of a MySQL field

>>:  Detailed explanation of the deployment process of SEATA transaction service Docker

Recommend

Analysis of the process of simply deploying nginx in Docker container

1. Deploy nginx service in container The centos:7...

XHTML three document type declarations

XHTML defines three document type declarations. T...

Sample code for implementing Alipay sandbox payment with Vue+SpringBoot

First, download a series of things from the Alipa...

base target="" controls the link's target open frame

<base target=_blank> changes the target fram...

Four solutions for using setTimeout in JS for loop

Table of contents Overview Solution 1: Closures S...

Make your text dance with the marquee attribute in HTML

Syntax: <marquee> …</marquee> Using th...

MySQL controls the number of attempts to enter incorrect passwords

1. How to monitor MySQL deadlocks in production e...

Method of realizing automated deployment based on Docker+Jenkins

Use Code Cloud to build a Git code storage wareho...

In-depth explanation of environment variables and configuration files in CentOS

Preface The CentOS environment variable configura...

Enabling and configuring MySQL slow query log

Introduction MySQL slow query log is an important...

Form submission refresh page does not jump source code design

1. Design source code Copy code The code is as fol...

How InnoDB cleverly implements transaction isolation levels

Preface In the previous article Detailed Explanat...

js to achieve simple product screening function

This article example shares the specific code of ...