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

How to implement h5 input box prompt + normal text box prompt

XML/HTML CodeCopy content to clipboard < input...

Steps to set up Windows Server 2016 AD server (picture and text)

Introduction: AD is the abbreviation of Active Di...

How complicated is the priority of CSS styles?

Last night, I was looking at an interview question...

Summary of shell's method for determining whether a variable is empty

How to determine whether a variable is empty in s...

Tomcat's class loading mechanism process and source code analysis

Table of contents Preface 1. Tomcat class loader ...

Summary of common Mysql DDL operations

Library Management Create a library create databa...

JavaScript to achieve slow motion animation effect

This article shares the specific code for JavaScr...

Vue3+TypeScript encapsulates axios and implements request calls

No way, no way, it turns out that there are peopl...

How to set up Spring Boot using Docker layered packaging

The Spring Boot project uses docker containers, j...

Implementation of mysql decimal data type conversion

Recently, I encountered a database with the follo...

MySQL foreign key setting method example

1. Foreign key setting method 1. In MySQL, in ord...

Vue Element-ui form validation rule implementation

Table of contents 1. Introduction 2. Entry mode o...

Getting Started with MySQL - Concepts

1. What is it? MySQL is the most popular relation...

Native js realizes the drag and drop of the nine-square grid

Use native JS to write a nine-square grid to achi...