JS简单拖拽效果

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>拖拽</title>
<style>
*{margin:0;padding:0;}
#box{width:100px;height:100px;background-color: #f00;position:absolute;left:0;top:0;}
</style>
</head>
<body>
<div id="box">

</div>
<script>
var box=document.getElementById("box");
box.onmousedown=function(e){
//获取获取鼠标初始位置
var mouse_x=e.clientX;
var mouse_y=e.clientY;

var box_x=box.offsetLeft;
var box_y=box.offsetTop;
document.onmousemove=function(e){
var mouse_now_x=e.clientX;
var mouse_noe_y=e.clientY;
result_x=box_x+mouse_now_x-mouse_x;
result_y=box_y+mouse_noe_y-mouse_y;
if(result_x<0){
result_x=0;
}else if(result_x>document.body.clientWidth-100){
result_x=document.body.clientWidth-100
}
if(result_y<0){
result_y=0;
}
box.style.left=result_x+"px";
box.style.top=result_y+"px";
}
}
box.onmouseup=function(){
document.onmousemove=null;
}
</script>
</body>
</html>

WEB前端学习交流群21 598399936

原文地址:https://www.cnblogs.com/luludehuhuan/p/8137394.html

时间: 2024-07-31 06:00:56

JS简单拖拽效果的相关文章

js之拖拽效果

主要原理: 1.当鼠标按下时,记录鼠标坐标,用到的是 onmousedown: 2.当鼠标移动时,计算鼠标移动的坐标之差,用到的是 onmousemove: 3.当鼠标松开时,清除事件,用到的是 onmouseup: 了解的知识: 1.div 的 offsetLeft 与 style.left 的区别: http://longxu1314.blog.163.com/blog/static/2112990412013101814844444/ 效果图如下: 突然发现有没有效果图都一样哈哈,不说废话

原生js实现拖拽效果

css样式布局: html部分: js主体部分: 接下来用混合继承实现box2移动时有边界的效果: 思路:1.实现拖拽效果主要有三个事件,当鼠标按下的时候,获取鼠标相对于事件发生元素的位置(offsetX/offsetY);当鼠标移动的时候,利用鼠标指针相对于浏览器页面(或客户区)的坐标(clientX/clientY),得到元素的left和top值(clientX/clientY-offsetX/offsetY):当鼠标抬起的时候清除移动效果. 2.事件处理函数会使this指向触发事件的元素,

js 鼠标拖拽效果实现

效果: 源码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>速表拖拽效果实现</title> <style> *{ margin: 0; padding: 0; } .toolbar{ height: 30px; text-align: left; padding-left: 20px;

JS简易拖拽效果

原理:注册mousemove事件,使元素跟随鼠标挪动:注册mouseup事件,移除mousemove事件,使得松开鼠标时元素不再跟随移动,能够固定在指定位置.在mousedown事件中注册mousemove事件和mouseup事件,这样便可完成一次完整的拖拽. 重点:IE中setCapture()的应用.它的作用是捕捉所有的MouseEvent,设置完成后,即使鼠标移出窗口注册的鼠标事件仍然能够被触发.它在此处的作用是当鼠标移动过快越出元素的边界使得原本将要失效的mousemove事件依然能够发

Javascript:简单拖拽效果的实现

核心代码: /* *完成一个拖拽事件由三大事件组成: *1:onmousedown:选择元素 *2:onmousemove:移动元素 *3:onmouseup:释放元素 */ function drag(obj){ obj.onmousedown=function(ev){ var ev=ev || event; var disX=ev.clientX-this.offsetLeft; var disY=ev.clientY-this.offsetTop; //IE下选中文字后移动时,文字跟着移

JS 简单拖拽

var login = document.getElementById('box'); login.onmousedown = function(e) { var e = getEvent(e);//获取event对象 var _this = this; var diffX = e.clientX - _this.offsetLeft;//鼠标点击的坐标点x减去box元素距离左边的距离,得到的差为鼠标垫距离box元素左边的距离 var diffY = e.clientY - _this.offs

简单的鼠标拖拽效果(原生js实现)

之前在聊天群里看到有人说面试的时候被问到了怎样实现一个拖拽效果,当时看到后在心里默默思考了下,结果发现好像我也写不出来啊.本着遇到一个解决一个的思想,就亲自敲了一个,看到张鑫旭大神写的代码,真的很厉害,多多学习了,(感觉随便搜一个关于前端方面的问题都能看到他的网站,真是太佩服了,写了那么多文章,十分感谢.)好了,接下来就进入正题了.想实现一个效果首先得明白其中的逻辑,知道了实现逻辑后,就可以码代码了.首先我实现的效果是: 鼠标按下后,才可以执行后续效果 鼠标已经按下,然后鼠标移动,需要拖拽的元素

WEB前端开发学习----11. JQuery 实现简单的拖拽效果

拖拽效果在网页中很常见.实现起来也不难.记录一下今天实现的简单效果. 拖拽演示 快速拖动时,会出现问题,以后修改. 说白了,就是3个点击事件. 1. 按下鼠标左键, 触发点击事件,此时记录下可以得到鼠标相对于拖动控件的位置(当前鼠标位置-控件位置): 2. 拖动鼠标,触发移动事件,可以计算出鼠标移动的距离(当前鼠标位置-之前算出的相对位置),也就是拖拽控件所移动的距离: 3. 鼠标抬起,结束拖动. 在JQ中,event.pageX    event.pageY可以获取鼠标的位置,相对于文档左上角

React.js实现原生js拖拽效果及思考

一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖拽效果. 首先,其实拖拽效果的思路是很简单的.主要就是三个步骤: 1.onmousedown的时候,启动可拖拽事件,记录被拖拽元素的原始坐标参数. 2.onmousemove的时候,实时记录鼠标移动的距离,结合被拖拽元素第一阶段的坐标参数,计算并设置新的坐标值. 3.onmouseup的时候,关闭可拖拽事件