完美实现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 相关文章推荐
prettify 代码高亮着色器google出品
Dec 28 Javascript
基于js disabled=&quot;false&quot;不起作用的解决办法
Jun 26 Javascript
利用js读取动态网站从服务器端返回的数据
Feb 10 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
May 05 Javascript
js中回调函数的学习笔记
Jul 31 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
May 12 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
Jun 13 Javascript
详解Vue Elememt-UI构建管理后台
Feb 27 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
Feb 27 Javascript
Vue 按键修饰符处理事件的方法
May 04 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
Aug 24 Javascript
React如何使用axios请求数据并把数据渲染到组件
Aug 05 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
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
JS原型对象通俗&quot;唱法&quot;
2012/12/27 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
js实现日历
2020/11/07 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
用Python的Flask框架结合MySQL写一个内存监控程序
2015/11/07 Python
python单例模式的多种实现方法
2019/07/26 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
Python如何实现机器人聊天
2020/09/10 Python
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
TripAdvisor日本:全球领先的旅游网站
2019/02/14 全球购物
Kickers鞋英国官网:男士、女士和儿童鞋
2021/03/08 全球购物
主题党日活动总结
2014/07/08 职场文书
地质工程专业毕业生求职信
2014/08/08 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
大学生入党自传2015
2015/06/26 职场文书
反邪教学习心得体会
2016/01/15 职场文书
小学信息技术教学反思
2016/02/16 职场文书
Django中的JWT身份验证的实现
2021/05/07 Python
Python利用zhdate模块实现农历日期处理
2022/03/31 Python