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 相关文章推荐
jQuery ui插件的使用方法代码实例
May 08 Javascript
简单的Jquery遮罩层代码实例
Nov 14 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
Sep 22 Javascript
Select下拉框模糊查询功能实现代码
Jul 22 Javascript
PHP抓取HTTPS内容和错误处理的方法
Sep 30 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
Jul 20 Javascript
JS实现的JSON数组去重算法示例
Apr 11 Javascript
Javascript Promise用法详解
May 10 Javascript
微信小程序自定义toast的实现代码
Nov 16 Javascript
json解析大全 双引号、键值对不在一起的情况
Dec 06 Javascript
基于vue实现图片验证码倒计时60s功能
Dec 10 Javascript
vue项目中播放rtmp视频文件流的方法
Sep 17 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
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
php实现的ping端口函数实例
2014/11/12 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
javascript自动给文本url地址增加链接的方法分享
2014/01/20 Javascript
深入探讨javascript中的数据类型
2015/03/04 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
Node.js使用MySQL连接池的方法实例
2018/02/11 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
python实现闹钟定时播放音乐功能
2018/01/25 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
python3 配置logging日志类的操作
2020/04/08 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
仓库保管员岗位职责
2013/12/20 职场文书
电工工作职责范本
2014/02/22 职场文书
给校长的建议书300字
2014/05/16 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
2014年连锁店圣诞节活动方案
2014/12/09 职场文书
学雷锋倡议书
2015/01/19 职场文书
旷课检讨书
2015/01/26 职场文书
坎儿井导游词
2015/02/09 职场文书
Python循环之while无限迭代
2022/04/30 Python