正在努力的二哈 2021-10-28 12:26 采纳率: 100%
浏览 41
已结题

拖拽(一个图片怎么重复拖动到多个位置,初始位置的图片一直都在)

img


 <div id="1" class="content1">
                          <img v-if="shangf" id="geshang" style="position:absolute;cursor: move;z-index:1200;" @mousedown="down" @mousemove="move" @mouseup="up" src="../../../assets/images/C.png" class="img1" />
                          <img  @click="regeshang"  style="position: relative;"  src="../../../assets/images/geshang.png" class="img1" />
                          <div style="margin-top:6px">割伤</div>
                          <div >(CUT)</div>
                        </div>

 dragging:false,
    boxX:'',
    boxY:'',
    mouseX:'',
    mouseY:'',
    offsetX:'',
    offsetY:'',
    shangf:false,


 regeshang(){
      console.log('测试时间是否只执行一次')
      if(this.tuodongshow==true){ 
        this.$Message.error('请选择您要执行的操作')
      }else{
        this.shangf=true
      }
    },
  //  拖动
    // 鼠标按下
    down(e){
      
       var box= document.getElementById('geshang')
       this.dragging = true
         console.log(box.offsetLeft,box.offsetLeft,'获取元素所在的坐标')
        // 获取元素所在的坐标
        this.boxX = box.offsetLeft
        this.boxY =box.offsetTop
        // 获取鼠标所在的坐标
        this.mouseX = parseInt(this.getMouseXY(e).x)
        this.mouseY = parseInt(this.getMouseXY(e).y)

        // 鼠标相对元素左和上边缘的坐标
        this.offsetX = this.mouseX - this.boxX
        this.offsetY = this.mouseY - this.boxY
     
     
    },
     // 函数用于获取鼠标的位置
     getMouseXY(e){
        var x = 0, y = 0
        e = e || window.event

        if (e.pageX) {
            x = e.pageX
            y = e.pageY
        } else {
            x = e.clientX + document.body.scrollLeft - document.body.clientLeft
            y = e.clientY + document.body.scrollTop - document.body.clientTop
        }

        return {
            x: x,
            y: y
        }
    },
    // 鼠标移动调用的函数
    move(e){
      var box= document.getElementById('geshang')
       if (this.dragging) {
         console.log('移动中')
            // 获取移动后的元素的坐标
            var x = this.getMouseXY(e).x - this.offsetX
            var y = this.getMouseXY(e).y - this.offsetY

            // 计算可移动位置的大小, 保证元素不会超过可移动范围
            var width = document.documentElement.clientWidth - box.offsetWidth
            var height = document.documentElement.clientHeight - box.offsetHeight
            console.log(document.documentElement.clientWidth,box.offsetWidth,'可移动范围')
            // min方法保证不会超过右边界,max保证不会超过左边界 width
            x = Math.min(Math.max(0, x), width)
            y = Math.min(Math.max(450, y), height)

            // 给元素及时定位
            box.style.left = x + 'px'
            box.style.top = y + 'px'
            console.log(box.style.left,box.style.top)
        }

    },
    up(){
      this.dragging=false
    },
   



img

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2021-10-28 13:42
    关注

    克隆一个img对象,拖动这个img,而不是原来的img,改下down和move事件

                down(e) {
                    var box = document.getElementById('geshang')
                    this.dragging = true
                    console.log(box.offsetLeft, box.offsetLeft, '获取元素所在的坐标')
                    // 获取元素所在的坐标
                    this.boxX = box.offsetLeft
                    this.boxY = box.offsetTop
                    // 获取鼠标所在的坐标
                    this.mouseX = parseInt(this.getMouseXY(e).x)
                    this.mouseY = parseInt(this.getMouseXY(e).y)
                    // 鼠标相对元素左和上边缘的坐标
                    this.offsetX = this.mouseX - this.boxX
                    this.offsetY = this.mouseY - this.boxY
    
                    ///////////////////////////
                    this.dragImg = box.cloneNode(true);//
                    this.dragImg.id = '';
                    this.dragImg.style.left = box.offsetLeft + 'px'
                    this.dragImg.style.top = box.offsetTop + 'px'
                    //注册克隆图片的事件@mousedown="down" @mousemove="move" @mouseup="up"
                    this.dragImg.addEventListener('mousemove', (e) => { this.move(e) })
                    this.dragImg.addEventListener('mouseup', (e) => { this.up(e) })
                    document.body.appendChild(this.dragImg);//
                    ///////////////////////////
           },
    
                
    move(e) {
                    var box = this.dragImg;//// document.getElementById('geshang')///移动克隆的对象
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月30日
  • 已采纳回答 3月22日
  • 创建了问题 10月28日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效