拖拽内容,并“获取坐标”的实现——(VUE,HTML完整页面)

目 录

一、VUE页面

预备操作

具体操作

二、Html页面

无预备操作,可以直接复制

 三、备注可能出错的地方

结束

一、VUE页面

预备操作:

1、使用iview vue2组件写的表单

2、代码部分包含四个案例

具体操作:

<template>
  <div>
    <img ref="block" class="ewm drag" style="" @dragstart="dragstart1($event)" @dragend="dragend1($event)"
      draggable="true" src="http://abt.saasqv.abtpt.com/img/ewm.d44cb15b.jpg" alt="">
    <img class="pLogo drag"
      src="http://saasoss.abtpt.com/QD1001/Sys_Source/logo/2020-01-16/LOGO20200116141103926957.png" ref="logo"
      draggable="true" @dragstart="dragstart2($event)" @dragend="dragend2($event)" alt="">

    <div class="drag" ref="name1" draggable="true" @dragstart="dragstart3($event)" @dragend="dragend3($event)" alt="">
      业务员姓名</div>

    <div class="drag" ref="mobile" draggable="true" @dragstart="dragstart4($event)" @dragend="dragend4($event)" alt="">
      133********</div>



    <Form :model="formItem" :label-width="100">
      <formItem label="二维码位置X">
        <InputNumber :max="10" :min="1" v-model="formItem.abtComKjLibwPostConfig.qrcodeLeft">
        </InputNumber>
      </formItem>
      <formItem label="二维码位置Y:">
        <InputNumber :max="10" :min="1" v-model="formItem.abtComKjLibwPostConfig.qrcodeTop">
        </InputNumber>
      </formItem>
      <formItem label="公司logoX:">
        <InputNumber :max="10" :min="1" v-model="formItem.abtComKjLibwPostConfig.branchLeft">
        </InputNumber>
      </formItem>
      <formItem label="公司logoY:">
        <InputNumber :max="10" :min="1" v-model="formItem.abtComKjLibwPostConfig.branchTop">
        </InputNumber>
      </formItem>
      <formItem label="电话位置X:">
        <InputNumber :max="10" :min="1" v-model="formItem.abtComKjLibwPostConfig.mobileLeft">
        </InputNumber>
      </formItem>
      <formItem label="电话位置Y:">
        <InputNumber :max="10" :min="1" v-model="formItem.abtComKjLibwPostConfig.mobileTop">
        </InputNumber>
      </formItem>
    </Form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      x1: 1,
      y1: 1,
      a: '',
      b: '',
      x2: 2,
      y2: 2,
      x3: 2,
      y3: 2,
      x4: 2,
      y4: 2,
      originPosX: 1,
      originPosY: 1,
      originPosX2: 1,
      originPosY2: 1,
      originPosX3: 1,
      originPosY3: 1,
      originPosX4: 1,
      originPosY4: 1,
      formItem: {
        abtComKjLibwPostConfig: { //详细的具体参数
          id: 47,
          btagcode: "2",
          sno: "ZYHB20220403142922662143",
          nameLeft: 0,
          nameTop: 0,
          nameFontSize: 30,
          nameFontColor: "#080808",
          mobileLeft: 0,
          mobileTop: 0,
          mobileFontSize: 30,
          mobileFontColor: "#0D0C0C",
          branchLeft: 0,
          branchTop: 0,
          branchWidth: 200,
          qrcodeLeft: 0,
          qrcodeTop: 0,
          qrcodeWidth: 150,
          width: 750,
          height: 1334
        }
      }
    }
  },
  methods: {
    // 修改坐标之  二维码
    // 开始1
    dragstart1(e) {
      console.log('拖拽开始');
      this.originPosX = e.offsetX;                        //记录开始拖拽元素位置
      this.originPosY = e.offsetY;
      console.log('offsetX:', window.event.offsetX);
      console.log('offsetY:', window.event.offsetY);
      this.x1 = window.event.offsetX;                         //记录开始拖拽鼠标位置
      this.y1 = window.event.offsetY;
    },
    // 开始2
    dragstart2(e) {
      console.log('拖拽开始');
      this.originPosX2 = e.offsetX;                        //记录开始拖拽元素位置
      this.originPosY2 = e.offsetY;
      console.log('offsetX:', window.event.offsetX);
      console.log('offsetY:', window.event.offsetY);
      this.x2 = window.event.offsetX;                         //记录开始拖拽鼠标位置
      this.y2 = window.event.offsetY;
    },
    // 开始3
    dragstart3(e) {
      console.log('拖拽开始');
      this.originPosX3 = e.offsetX;                        //记录开始拖拽元素位置
      this.originPosY3 = e.offsetY;
      console.log('offsetX:', window.event.offsetX);
      console.log('offsetY:', window.event.offsetY);
      this.x3 = window.event.offsetX;                         //记录开始拖拽鼠标位置
      this.y3 = window.event.offsetY;
    },
    // 开始4
    dragstart4(e) {
      console.log('拖拽开始');
      this.originPosX4 = e.offsetX;                        //记录开始拖拽元素位置
      this.originPosY4 = e.offsetY;
      console.log('offsetX:', window.event.offsetX);
      console.log('offsetY:', window.event.offsetY);
      this.x4 = window.event.offsetX;                         //记录开始拖拽鼠标位置
      this.y4 = window.event.offsetY;
    },


    // // 结束1
    dragend1() {
      console.log('拖拽结束');
      console.log('offsetX:', window.event.offsetX);
      console.log('offsetY:', window.event.offsetY);
      this.formItem.abtComKjLibwPostConfig.qrcodeLeft = window.event.offsetX;                            //记录结束拖拽鼠标位置
      this.formItem.abtComKjLibwPostConfig.qrcodeTop = window.event.offsetY;
      this.$refs.block.style.left = this.originPosX + this.formItem.abtComKjLibwPostConfig.qrcodeLeft - this.x1 + 'px';            //元素最后位置为:元素开始位置+鼠标结束拖拽位置-鼠标开始拖拽位置(当然也别忘记加单位px)
      this.$refs.block.style.top = this.originPosY + this.formItem.abtComKjLibwPostConfig.qrcodeTop - this.y1 + 'px';
    },

    // 结束2
    dragend2() {
      console.log('拖拽结束');
      this.formItem.abtComKjLibwPostConfig.branchLeft = window.event.offsetX;                            //记录结束拖拽鼠标位置
      this.formItem.abtComKjLibwPostConfig.branchTop = window.event.offsetY;
      this.$refs.logo.style.left = this.originPosX2 + this.formItem.abtComKjLibwPostConfig.branchLeft - this.x2 + 'px';            //元素最后位置为:元素开始位置+鼠标结束拖拽位置-鼠标开始拖拽位置(当然也别忘记加单位px)
      this.$refs.logo.style.top = this.originPosY2 + this.formItem.abtComKjLibwPostConfig.branchTop - this.y2 + 'px';
    },


    // 结束3
    dragend3() {
      console.log('拖拽结束');
      this.formItem.abtComKjLibwPostConfig.nameLeft = window.event.offsetX;                            //记录结束拖拽鼠标位置
      this.formItem.abtComKjLibwPostConfig.nameTop = window.event.offsetY;
      this.$refs.name1.style.left = this.originPosX3 + this.formItem.abtComKjLibwPostConfig.nameLeft - this.x2 + 'px';            //元素最后位置为:元素开始位置+鼠标结束拖拽位置-鼠标开始拖拽位置(当然也别忘记加单位px)
      this.$refs.name1.style.top = this.originPosY3 + this.formItem.abtComKjLibwPostConfig.nameTop - this.y2 + 'px';
    },

    // 结束4
    dragend4() {
      console.log('拖拽结束');
      this.formItem.abtComKjLibwPostConfig.mobileLeft = window.event.offsetX;                            //记录结束拖拽鼠标位置
      this.formItem.abtComKjLibwPostConfig.mobileTop = window.event.offsetY;
      this.$refs.mobile.style.left = this.originPosX4 + this.formItem.abtComKjLibwPostConfig.mobileLeft - this.x2 + 'px';            //元素最后位置为:元素开始位置+鼠标结束拖拽位置-鼠标开始拖拽位置(当然也别忘记加单位px)
      this.$refs.mobile.style.top = this.originPosY4 + this.formItem.abtComKjLibwPostConfig.mobileTop - this.y2 + 'px';
    },


    keydown() {
      console.log('keydown');
    }
  }
}
</script>

<style>
.drag {
  width: 120px;
  height: 120px;
  position: relative;
}
</style>

二、Html页面[此页面有参考

链接:实现简单的元素拖拽_星空之迹的博客-CSDN博客_元素拖拽]

无预备操作,可以直接复制

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .drag{
            background-color: aquamarine;
            width: 100px;
            height: 100px;
            position:relative; 
        }
        .test{
            background-color: rgb(255, 14, 6);
            width: 100px;
            height: 100px;
            color:aquamarine;
        }
    </style>
</head>
<body>
    <div class="drag" 
    ondragstart="dragstart1()" 			
    ondragend="dragend1()"
    draggable="true"
    >拖拽</div> 
    //设置元素可拖拽,并监听开始结束拖拽事件
</body>
<script>
    let drag=document.getElementsByClassName('drag')[0];
    let x1,x2,y1,y2,originPosX,originPosY;
    let dragstart1=function(e){
        console.log('拖拽开始');
        console.log('drag.offsetLeft',drag.offsetLeft);  
        console.log('drag.offsetTop',drag.offsetTop);		//因为元素位置是以左上角来计算的,点击时一般不在左上角,所以要分开计算
        originPosX=drag.offsetLeft;                        //记录开始拖拽元素位置
        originPosY=drag.offsetTop;
         console.log('offsetX:',window.event.offsetX);  
         console.log('offsetY:',window.event.offsetY);
         x1=window.event.offsetX;                         //记录开始拖拽鼠标位置
         y1=window.event.offsetY;
    }
    let dragend1=function(){
        console.log('拖拽结束');
        console.log('offsetX:',window.event.offsetX);
        console.log('offsetY:',window.event.offsetY);
        x2=window.event.offsetX;                            //记录结束拖拽鼠标位置
        y2=window.event.offsetY;
        drag.style.left=originPosX+x2-x1+'px';            //元素最后位置为:元素开始位置+鼠标结束拖拽位置-鼠标开始拖拽位置(当然也别忘记加单位px)
        drag.style.top=originPosY+y2-y1+'px';				
    }
    keydown=function(){
        console.log('keydown');
    }
</script>
</html>

 三、备注可能出错的地方

使用时候只需要修改:x1,y1,originPosX1: 1,originPosY1: 1,以及表单绑定的v-model

display记得设置,要脱离标准流

结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值