js实现鼠标拖拽

目录

css代码

 html代码

js代码

完整代码

效果图: 


需求:

鼠标在图片内按下时 图片可以跟随盒子动

 鼠标弹起图片停下来

 如果图片在box的盒子里面时鼠标弹起了 就把图片展示在box里面 并且让图片回到起始位置

css代码

 .div {
        width: 100px;
        height: 100px;
        background-color: skyblue;
        position: absolute;
        top: 0;
        left: 0;
    }

    img {
        width: 100%;
        height: 100%;
    }

    .box {
        width: 300px;
        height: 300px;
        background-color: pink;
        margin-top: 300px;
        margin-left: 500px;
    }

 html代码

<div class="div">
        <img src="1.jpg" alt="">
    </div>
    <div class="box">

    </div>

js代码

  <script>
      const div = document.querySelector('.div')
      const box = document.querySelector('.box')
      

        //鼠标在div按下
        div.onmousedown = function (e) {
            // 鼠标在按下后,在文档上移动时,盒子跟着
            document.onmousemove = function (e) {
                div.style.top = e.clientY + 'px'
                div.style.left = e.clientX + 'px'
            }
        }
        div.onmouseup = function (e) {
            //把div图片的地址拿到赋值给imgSrc变量
            const imgSrc = e.target.src
            // 判断div只要在box盒子里就把div图片给box
            if (e.clientX > 500 && e.clientX < 800 && e.clientY > 300 && e.clientY < 600) {
                // 动态创建img
                const img = document.createElement('img')
                // 把imgSrc赋值给创建的img的src属性
                box.appendChild(img)
                // 把创建的img添加到box元素
                img.src = imgSrc
                //    div回到原来的位置
                div.style.top = 0
                div.style.left = 0
            }
            // 鼠标弹起时移除鼠标移动事件,让图片停下来
            document.onmousemove = null
        }



    </script>

完整代码

<!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>
</head>
<style>
    .div {
        width: 100px;
        height: 100px;
        background-color: skyblue;
        position: absolute;
        top: 0;
        left: 0;
    }

    img {
        width: 100%;
        height: 100%;
    }

    .box {
        width: 300px;
        height: 300px;
        background-color: pink;
        margin-top: 300px;
        margin-left: 500px;
    }
</style>


<body>
    <div class="div">
        <img src="1.jpg" alt="">
    </div>
    <div class="box">

    </div>
    <script>
      const div = document.querySelector('.div')
      const box = document.querySelector('.box')
        // 鼠标在图片内按下时 图片可以跟随盒子动
        // 鼠标弹起图片停下来
        // 如果图片在box的盒子里面时鼠标弹起了 就把图片展示在box里面 并且让图片回到起始位置


        //鼠标在div按下
        div.onmousedown = function (e) {
            // 鼠标在按下后,在文档上移动时,盒子跟着
            document.onmousemove = function (e) {
                div.style.top = e.clientY + 'px'
                div.style.left = e.clientX + 'px'
            }
        }
        div.onmouseup = function (e) {
            //把div图片的地址拿到赋值给imgSrc变量
            const imgSrc = e.target.src
            // 判断div只要在box盒子里就把div图片给box
            if (e.clientX > 500 && e.clientX < 800 && e.clientY > 300 && e.clientY < 600) {
                // 动态创建img
                const img = document.createElement('img')
                // 把imgSrc赋值给创建的img的src属性
                box.appendChild(img)
                // 把创建的img添加到box元素
                img.src = imgSrc
                //    div回到原来的位置
                div.style.top = 0
                div.style.left = 0
            }
            // 鼠标弹起时移除鼠标移动事件,让图片停下来
            document.onmousemove = null
        }



    </script>
</body>

</html>

效果图: 

相关推荐

  1. js使用canvas实现图片鼠标滚轮放大缩小预览

    2023-12-05 17:42:05       21 阅读
  2. js实现元素可方法

    2023-12-05 17:42:05       46 阅读
  3. js实现快速(定时器版本)

    2023-12-05 17:42:05       17 阅读
  4. 基于Vue.js 实现简易指令

    2023-12-05 17:42:05       14 阅读
  5. React实践

    2023-12-05 17:42:05       44 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-05 17:42:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-05 17:42:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-05 17:42:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-05 17:42:05       18 阅读

热门阅读

  1. Spring事件注解@EventListener【观察】

    2023-12-05 17:42:05       33 阅读
  2. mysql相关查询语法(自用)

    2023-12-05 17:42:05       41 阅读
  3. Ubuntu18.04安装LVI-SAM保姆级教程

    2023-12-05 17:42:05       36 阅读
  4. webpack的plugin和loader的区别

    2023-12-05 17:42:05       35 阅读
  5. ubuntu22.04更新内核后无wifi选项

    2023-12-05 17:42:05       40 阅读
  6. 【开发规范】前端开发中引用文件的方式

    2023-12-05 17:42:05       39 阅读
  7. 前端开启gzip优化页面加载速度

    2023-12-05 17:42:05       32 阅读
  8. 前端学习笔记

    2023-12-05 17:42:05       40 阅读
  9. MacBook续命,XCode硬盘占用问题

    2023-12-05 17:42:05       42 阅读
  10. base64转PDF

    2023-12-05 17:42:05       38 阅读
  11. Flutter, pub 无法安装依赖 等问题

    2023-12-05 17:42:05       36 阅读