js鼠标拖拽

<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>*{margin: 0;padding: 0;}</style>
</head>
<body>
<div id="demo" style="position:absolute;width: 100px;height: 100px;background: #ccc;border:solid 1px #ccc;">按住左键拖动</div>
</body>
<script>
window.onload = function() {
//用于确定是否是拖拽的对象
var drag;
//鼠标位于目标元素上的时候距离目标元素的位置
var x,y;
//取得元素
var ele = document.getElementById('demo');

    //鼠标按下去  
    ele.onmousedown = function(evt) {  
        //取得事件对象  
        _event = evt || window.event;  
        //设置drag元素  
        target = _event.target || _event.srcElement;  
        x = _event.clientX - target.offsetLeft;  
        y = _event.clientY - target.offsetTop;  
        drag = target;  
    }  

    //鼠标移动  
    document.onmousemove = function(evt) {  
        //确定鼠标是在目标元素上按下去后才开始移动  
        if(drag) {  
            _event = evt || window.event;  

            //设置边界  
            var left = _event.clientX - x;  
            var top = _event.clientY - y;  
            body = document.documentElement || document.body;  
            if (left < 0) left = 0;  
            if (left > body.offsetWidth - drag.offsetWidth) left = body.offsetWidth - drag.offsetWidth;  
            if (top < 0) top = 0;  
            if (top > (body.offsetHeight - drag.offsetHeight)) top = (body.offsetHeight - drag.offsetHeight);  

            //设置样式  
            drag.style.cursor = 'move';  
            drag.style.border = 'dashed 1px red';  
            drag.style.left = left + 'px';  
            drag.style.top = top + 'px';  
        }  
    }  

    //松开鼠标  
    document.onmouseup = function(evt) {  
        if(drag) {  
            //卸载样式  
            drag.style.cursor = '';  
            drag.style.border = 'dashed 1px #ccc';  
        }  
        drag = null;  
    }  

}  

</script>
</html>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 我们首先要明白,我们给页面添加效果用到的js到底是什么?js其实包含三部分:dom 文档对象模型 bom 浏览...
    一直以来都很好阅读 874评论 0 0
  • 只记录left,top同理。clientX:返回鼠标相对于浏览器的水平坐标;offsetLeft:返回当前对象距离...
    小菇凉大思想阅读 979评论 0 0
  • 1. tab列表折叠效果 html: 能源系统事业部 岗位名称: 工作地点 岗位名...
    lilyping阅读 2,014评论 0 1
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,142评论 0 2
  • 前端开发面试知识点大纲: HTML&CSS: 对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:...
    秀才JaneBook阅读 2,774评论 0 25

友情链接更多精彩内容