完美实现js拖拽效果 return false用法详解


Posted in Javascript onJuly 28, 2017

本文为大家分享了完美实现js拖拽效果的具体代码,告诉大家return false的用法,供大家参考,具体内容如下

1.return false可以用来阻止默认事件即系统默认事件。例如通过阻止默认事件,来对textarea中的值进行范围限制(通过限制keycode的数值),也可以自定义在页面中的右键菜单(oncontextmenu)。

2.在鼠标移动(mousemove)等事件中,是需要给事件传一个参数,保证程序的正常运行。而为了兼容取事件方法为:var oEvent=ev||event;

3.在节点中创建一个新的节点的方法为:

var oBox=document.createElement('div');
    oBox.className='box';
    oBox.style.left = oDiv.offsetLeft+'px';
    oBox.style.top = oDiv.offsetTop+'px';
    oBox.style.width = oDiv.offsetWidth+'px';
    oBox.style.height = oDiv.offsetHeight+'px';
    document.body.appendChild(oBox);
    //注意,在创建完之后一定要将创建好的节点加入body中!!!

下列为完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>完美拖拽2</title>
 <style>
  *{
   margin: 0;
   padding: 0;
  }
  #div1{
   width: 150px;
   height: 150px;
   background: #71C525;
   position: absolute;
  }
  .box{
   border: 2px dashed black;
   position: absolute;
  }
 </style>
 <script>
  window.onload=function()
  {
   var oDiv = document.getElementById('div1');
   var disX=null;
   var disY=null;

   oDiv.onmousedown=function(ev)
   {
    var oEvent=event||ev;
    disX=oEvent.clientX-oDiv.offsetLeft;
    disY=oEvent.clientY-oDiv.offsetTop;

    var oBox=document.createElement('div');
    oBox.className='box';
    oBox.style.left = oDiv.offsetLeft+'px';
    oBox.style.top = oDiv.offsetTop+'px';
    oBox.style.width = oDiv.offsetWidth+'px';
    oBox.style.height = oDiv.offsetHeight+'px';

    document.body.appendChild(oBox);

    document.onmousemove=function(ev)
    {
     var oEvent=event||ev;
     var l=oEvent.clientX-disX;
     var t=oEvent.clientY-disY;

     if (l<0) {
      l=0;
     } else if (l>document.documentElement.clientWidth-oDiv.offsetWidth) {
      l=document.documentElement.clientWidth-oDiv.offsetWidth;
     }
     if (t<0) {
      t=0;
     } else if (t>document.documentElement.clientHeight-oDiv.offsetHeight) {
      t=document.documentElement.clientHeight-oDiv.offsetHeight;
     }

     oBox.style.left = l+'px';
     oBox.style.top=t+'px';

    };
    document.onmouseup=function()
    {
     document.onmousedown=null;
     document.onmousemove=null;
     oDiv.style.left = oBox.offsetLeft+'px';
     oDiv.style.top = oBox.offsetTop+'px';
     document.body.removeChild(oBox);
    };
    return false;//阻止默认事件(系统默认事件)!
   };
  };
 </script>
</head>
<body>
 <div id="div1"></div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
让焦点自动跳转
Jul 01 Javascript
JS解密入门 最终变量劫持
Jun 25 Javascript
dreamweaver 8实现Jquery自动提示
Dec 04 Javascript
JQuery替换DOM节点的方法
Jun 11 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
Sep 05 Javascript
点评js异步加载的4种方式
Dec 22 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
May 17 Javascript
浅析location.href跨窗口调用函数
Nov 22 Javascript
简单实现JS倒计时效果
Dec 23 Javascript
Three.JS实现三维场景
Dec 30 Javascript
node创建Vue项目步骤详解
Mar 06 Javascript
Openlayers测量距离与面积的实现方法
Sep 25 Javascript
webpack 2的react开发配置实例代码
Jul 28 #Javascript
基于AngularJS实现表单验证功能
Jul 28 #Javascript
AngularJS service之select下拉菜单效果
Jul 28 #Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
Jul 28 #Javascript
bootstrap datepicker插件默认英文修改为中文
Jul 28 #Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
Jul 28 #Javascript
基于JS实现移动端左滑删除功能
Jul 28 #Javascript
You might like
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
Js 本页面传值实现代码
2009/05/17 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
[55:45]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第一局
2016/02/28 DOTA
python实现在windows下操作word的方法
2015/04/28 Python
浅析python中的分片与截断序列
2016/08/09 Python
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
使用python来调用CAN通讯的DLL实现方法
2019/07/03 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
Python龙贝格法求积分实例
2020/02/29 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
运动会广播稿300字
2014/01/10 职场文书
小学开学寄语
2014/01/19 职场文书
年终总结会主持词
2014/03/25 职场文书
《和田的维吾尔》教学反思
2014/04/14 职场文书
志愿者活动总结范文
2014/04/26 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
java版 联机五子棋游戏
2022/05/04 Java/Android
Linux中各个目录的作用与内容
2022/06/28 Servers