鼠标拖拽效果

效果主要是实现网页中内容模块的鼠标拖拽,主要代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>鼠标拖动事件操作</title>
<style>
#box {
position: absolute;
height: 300px;
width: 400px;
background-color: red;
}
</style>
</head>

<body>
<div id="box">广告</div>

<script>
    let box = document.getElementById("box")
    box.onmousedown = function (z) {
        let offsetX = z.offsetX
        let offsetY = z.offsetY
        console.log(offsetX, "offsetX")
        console.log(offsetY, "offsetY")

        document.onmousemove = function (z2) {
            let clientX = z2.clientX
            let clientY = z2.clientY
            console.log(clientX, "clientX")
            console.log(clientY, "clientY")

            _left = clientX - offsetX
            _top = clientY - offsetY
            console.log(_left, "left")
            console.log(_top, "top")

            if(_left < 0){
                _left = 0
            }
            if(_top < 0){
                _top = 0
            }
            if(_left > document.documentElement.clientWidth - box.offsetWidth){
                _left = document.documentElement.clientWidth - box.offsetWidth
            }
            if(_top > document.documentElement.clientWidth - box.offsetWidth){
                _top = document.documentElement.clientWidth - box.offsetWidth
            }

            box.style.left = _left + "px"
            box.style.top = _top + "px"
        }
    }

    document.onmouseup=function(){
        document.onmousemove=null
    }
</script>

</body>

</html>

图片效果如下:

屏幕截图 2025-03-27 200417.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • <!DOCTYPE html> Document .box{width: 300px;height: ...
    b8a282f5d556阅读 412评论 0 0
  • 本次编写结果 代码展示:<!DOCTYPE html> Document #box {position: abs...
    风流_8cce阅读 793评论 0 0
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,002评论 1 45
  • client,page和screen的区别? clientX,clientY是触摸点相对于viewport视口x,...
    change_22fa阅读 5,650评论 1 1
  • 1 放大镜实例 页面结构:创建左右两个容器,左边容器中添加一张图片背景图,右边容器中添加一张与背景图成比例放大的图...
    果木山阅读 2,350评论 0 0