JavaScript 拖拽实例代码


Posted in Javascript onSeptember 21, 2016

一、JS 拖拽的实现实例代码:

<!DOCTYPE html>
 <html lang="en">
 <head>
 <meta charset="UTF-8" />
 <title>拖拽js</title>
 <style type="text/css">
 html, body {
 overflow:hidden;
 }
 body, div, {
 margin:0;
 padding:0;
 }
 body {
 color:#fff;
 font:12px/2 Arial;
 }
 p {
 padding:0 10px;
 margin-top:10px;
 }
 span {
 color:#ff0;
 padding-left:5px;
 }
 #box {
 position:absolute;
 width:300px;
 height:150px;
 background:#D5CDDA;
 border:2px solid #ccc;
 top:150px;
 left:400px;
 margin:0;
 }
 #drag {
 height:25px;
 cursor:move;
 background:#724a88;
 border-bottom:2px solid #ccc;
 padding:0 10px;
 }

</style>
</head>
<body>
<div id="box">
 <div id="drag">拖动区域</div>
 被拖动的整个div
 </div>
</body>
</html>

<script src="js/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(function(){
 moveBox($("#box"),$("#drag")) ;
})
//B被拖动的div,BT可拖动区域
function moveBox(B,BT){
 var bDrag = false;
 var _x,_y;
 BT.mousedown(function(event){
var e=event || window.event;
bDrag = true;
 _x=e.pageX-B.position().left;
 _y=e.pageY-B.position().top;
 return false
 })
 $(document).mousemove(function(event){
 if(!bDrag) return false;
 var e=event || window.event;
 var x=e.pageX-_x;
 var y=e.pageY-_y;
 console.log(B.position());
 var maxL = $(document).width() - B.outerWidth();
 var maxT = $(document).height() - B.outerHeight();
 x = x < 0 ? 0: x; x = x > maxL ? maxL: x;
 y = y < 0 ? 0: y; y = y > maxT ? maxT: y;
 B.css({left:x,top:y});
 return false
 }).mouseup(function(){
 bDrag = false;
 return false
 })
}
</script>

二、 js之拖拽效果

主要原理:

   1、当鼠标按下时,记录鼠标坐标,用到的是 onmousedown;

   2、当鼠标移动时,计算鼠标移动的坐标之差,用到的是 onmousemove;

   3、当鼠标松开时,清除事件,用到的是 onmouseup;

了解的知识:

   1、div 的 offsetLeft 与 style.left 的区别:https://3water.com/article/93142.htm

效果图如下:

JavaScript 拖拽实例代码

突然发现有没有效果图都一样哈哈,不说废话了,上代码:

html代码:

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf8">
 <title>js拖拽效果</title>
 <style type="text/css">
 #div1 {
  width : 200px;
  height: 200px;
  position: absolute;
  background: #99dd33;
  cursor: move;
 }
 </style>
</head>
<body>
 <div id="div1"></div>
</body>
<script type="text/javascript">
 // js代码
</script>
</html>

js代码:

window.onload function() {
 var disX = disY = 0;       // 鼠标距离div的左距离和上距离
 var div1 = document.getElementById("div1"); // 得到div1对象
 
 // 鼠标按下div1时
 div1.onmousedown = function(e) {
  var evnt = e || event;     // 得到鼠标事件
  disX = evnt.clientX - div1.offsetLeft; // 鼠标横坐标 - div1的left
  disY = evnt.clientY - div1.offsetTop; // 鼠标纵坐标 - div1的top
  
  // 鼠标移动时
  document.onmousemove = function(e) {
   var evnt = e || event;
   var x = evnt.clientX - disX;
   var y = evnt.clientY - disY;
   var window_width = document.documentElement.clientWidth - div1.offsetWidth;
   var window_height = document.documentElement.clientHeight - div1.offsetHeight;
   
   x = ( x < 0 ) ? 0 : x;       // 当div1到窗口最左边时
   x = ( x > window_width ) ? window_width : x; // 当div1到窗口最右边时
   y = ( y < 0 ) ? 0 : y;       // 当div1到窗口最上边时
   y = ( y > window_height ) ? window_height : y; // 当div1到窗口最下边时
   
   div1.style.left = x + "px";
   div1.style.top = y + "px";
  };
  
  // 鼠标抬起时
  document.onmouseup = function() {
   document.onmousemove =null;
   document.onmouup = null;
  };
  
  return false;
 };
};

 当然,这个虽然支持大部分浏览器,但是,我觉得div跟随鼠标的速度有点滞后,如果有好的解决办法请联系我喔,谢谢!

以上就是js实现拖拽的实例代码,有需要的小伙伴可以参考下,谢谢大家对本站的支持!

Javascript 相关文章推荐
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
Jan 21 Javascript
如何动态的导入js文件具体该怎么实现
Jan 14 Javascript
javascript原型链继承用法实例分析
Jan 28 Javascript
js+HTML5实现视频截图的方法
Jun 16 Javascript
动态加载JavaScript文件的两种方法
Apr 22 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
Jan 13 Javascript
jquery中绑定事件的异同
Feb 28 Javascript
JS实现运动缓冲效果的封装函数示例
Feb 18 Javascript
解决vue.js 数据渲染成功仍报错的问题
Aug 25 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
Sep 29 Javascript
Three.js实现简单3D房间布局
Dec 30 Javascript
详解JavaScript 中的批处理和缓存
Nov 19 Javascript
Angularjs中controller的三种写法分享
Sep 21 #Javascript
jQuery中Find选择器用法示例
Sep 21 #Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
Sep 21 #Javascript
Angular2 (RC5) 路由与导航详解
Sep 21 #Javascript
Angular2 (RC4) 路由与导航详解
Sep 21 #Javascript
AngularJS 单元测试(二)详解
Sep 21 #Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
Sep 21 #Javascript
You might like
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
firefo xml 读写实现js代码
2009/06/11 Javascript
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
浅谈Python中的数据类型
2015/05/05 Python
python实现自动更换ip的方法
2015/05/05 Python
python简单获取数组元素个数的方法
2015/07/13 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
详解Python if-elif-else知识点
2018/06/11 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
巴基斯坦购物网站:Goto
2019/03/11 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
安全生产先进个人材料
2014/02/06 职场文书
优秀员工演讲稿
2014/05/19 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
详解运行Python的神器Jupyter Notebook
2021/06/03 Python