使用js在浏览器的页面中随意地拖拽图片

本文介绍了一种在浏览器页面中实现图片拖拽的方法。通过HTML、CSS和JavaScript结合使用,使得图片能在页面上自由移动。文章详细展示了如何监听鼠标事件,并通过计算偏移量使图片跟随鼠标移动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码:

<!DOCTYPE html>
<html lang="ch">
    <head>
        <meta charset="UTF-8">
        <title>在浏览器的页面中随意拖拽图片</title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            #img1{
                width: 150px;
                position: absolute;
                left: 120px;
                top: 120px;
            }
        </style>
        <script type="text/javascript">
            window.onload = function () {
                var img = document.getElementById("img1");
                dragImg(img);
            };
            //设计一个专门用来拖拽图片的函数  obj参数 就是待拖拽的元素
            function dragImg(obj) {
                //理清逻辑 当鼠标的指针剪头在待拖拽的元素的上方按下是 开始进行拖拽
                obj.onmousedown = function (event){
                    //为了兼容IE8  下面这行代码表示你有这个就执行
                    //浏览器有一个默认行为 就是你选种的元素有一个拖拽的效果 拉到导航栏中可以搜索的那个捕获ta
                    obj.setCaptue && obj.setCaptue();
                    //也是为了兼容IE8 window.event(IE8) 它的事件对象属性在window中
                    event = event || window.event;
                    //获取偏移量 保持鼠标的指针 不动  offsetLeft返回当前元素左上角相对于 HTMLElement.offsetParent节点的左边界偏移的像素值。
                    //偏移量 offset
                    var ox = event.clientX - obj.offsetLeft;
                    var oy = event.clientY - obj.offsetTop;
                    //开始进行鼠标的移动 然后图片的移动
                    document.onmousemove = function (event) {
                        event = event ||window.event;
                        //当鼠标移动时 被拖拽元素跟移动
                        //获取鼠标的二维坐标
                        var left = event.clientX - ox;
                        var top = event.clientY - oy;

                        //修改图片的位置
                        obj.style.left = left +"px";
                        obj.style.top = top +"px";
                    };
                    //移动完成后 鼠标的一个松开的事件
                    document.onmouseup = function () {
                        //当鼠标松开的时候 这个图片  被固定在当前的位置
                        //取消鼠标的移动事件 和 ta被松开的事件
                        document.onmousemove = null;
                        document.onmouseup = null;
                        //浏览器有一个默认行为 就是你选种的元素有一个拖拽的效果 拉到导航栏中可以搜索的那个
                        //取消对ta的捕获
                        obj.releaseCapture && obj.releaseCapture();
                    };
                    /*
                     * 当我们拖拽一个网页中的内容时,浏览器会默认去搜索引擎中搜索内容,
                     * 此时会导致拖拽功能的异常,这个是浏览器提供的默认行为,
                     * 如果不希望发生这个行为,则可以通过return false来取消默认行为
                     * 但是这招对IE8不起作用 IE8用这个obj.releaseCapture && obj.releaseCapture();
                     */
                    return false;
                };
            }

        </script>
    </head>
    <body>
        <img id="img1" src="img/test.jpg" alt="测试图片">
    </body>
</html>

在这里插入图片描述
中间那个鼠标剪头位置 点上去不变 就是把他这个差值弄清楚。
然后最后的效果展示:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值