完美实现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 相关文章推荐
jquery 选项卡效果 新手代码
Jul 08 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
Jan 04 Javascript
Jquery自定义button按钮的几种方法
Jun 11 Javascript
JavaScript中Function详解
Feb 27 Javascript
JavaScript中的对象与JSON
Jul 03 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
Nov 30 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
Jan 10 Javascript
图片懒加载imgLazyLoading.js使用详解
Sep 15 Javascript
Angular使用操作事件指令ng-click传多个参数示例
Mar 27 Javascript
Node.js + express基本用法教程
Mar 14 Javascript
JS判断数组是否包含某元素实现方法汇总
Jun 24 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
Nov 12 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
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
用PHP制作静态网站的模板框架(三)
2006/10/09 PHP
谈谈PHP的输入输出流
2007/02/14 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
2016/10/28 PHP
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
JavaScript使用canvas绘制随机验证码
2020/02/17 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
Python牛刀小试密码爆破
2011/02/03 Python
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
Python实现简单的HttpServer服务器示例
2017/09/25 Python
python实现图片处理和特征提取详解
2017/11/13 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
Tensorflow中tf.ConfigProto()的用法详解
2020/02/06 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
在求职信中如何凸显个人优势
2013/10/30 职场文书
优秀党员主要事迹
2014/01/19 职场文书
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
《画杨桃》教学反思
2014/04/13 职场文书
热门专业求职信
2014/05/24 职场文书
环境卫生标语
2014/06/09 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
孔繁森观后感
2015/06/10 职场文书
2016年情人节广告语
2016/01/28 职场文书