完美实现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 相关文章推荐
js 用CreateElement动态创建标签示例
Nov 20 Javascript
招聘网站基于jQuery实现自动刷新简历
May 10 Javascript
分享javascript实现的冒泡排序代码并优化
Jun 05 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
Nov 18 Javascript
Bootstrap列表组学习使用
Feb 09 Javascript
js 博客内容进度插件详解
Feb 19 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
Apr 18 Javascript
vue mint-ui学习笔记之picker的使用
Oct 11 Javascript
微信小程序页面跳转功能之从列表的item项跳转到下一个页面的方法
Nov 27 Javascript
vue-router配合ElementUI实现导航的实例
Feb 11 Javascript
koa router 多文件引入的方法示例
May 22 Javascript
vue-form表单验证是否为空值的实例详解
Oct 29 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运行时强制显示出错信息的代码
2011/04/20 PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
PHP 生成N个不重复的随机数
2015/01/21 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
无闪烁更新网页内容JS实现
2013/12/19 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
2015/11/24 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
Jquery Easyui自定义下拉框组件使用详解(21)
2020/12/31 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
在Vuex中Mutations修改状态操作
2020/07/24 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
vue实现登录功能
2020/12/31 Vue.js
python中实现延时回调普通函数示例代码
2017/09/08 Python
利用Python正则表达式过滤敏感词的方法
2019/01/21 Python
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
考核评语大全
2014/04/29 职场文书
城管综合整治方案
2014/05/01 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
公司门卫岗位职责
2015/04/13 职场文书
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL