原生js实现可拖拽效果


Posted in Javascript onFebruary 28, 2017

效果图:

原生js实现可拖拽效果

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>可拖拽特效</title>
 <style type="text/css">
 *{margin: 0;padding: 0;}
 .header{width:100%;height:30px;background:#036663;line-height:30px;color:#fff;text-indent:30px;}
 #demo{width:400px;height:300px;border:solid 5px #eee;box-shadow:0 0 5px #666;position:absolute;top:40%;left:40%;}
 #innerht{height:25px;background:#036663;border-bottom:solid 1px #369;color:#fff;text-indent:10px;cursor:move;}
 #close{float:right;cursor:pointer;}
 </style>
</head>
<body>
<div class="header">注册信息</div>
<div id="demo">
 <div id="innerht">注册信息(可拖拽)<span id="close">【关闭】</span></div>
 <div class="write"></div>
</div>
</body>
<script type="text/javascript">
 (function(window){
 function $(id){
  return document.getElementById(id);
 };
 // 获取对象
 var innerht = $("innerht"),demo = $("demo"),close = $("close");
 // 给innerht绑定鼠标事件
 innerht.onmousedown = function(event){
  // 解决event兼容问题
  var event = event || window.event; 
  // 获取鼠标在页面上坐标
  var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
  var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
  // 获取鼠标在innerht内部的坐标
  var innerX = pageX - demo.offsetLeft;
  var innerY = pageY - demo.offsetTop;
  // 给document绑定鼠标移动事件,防止鼠标快速滑动时滑出innerht
  document.onmousemove = function(event){
  var event = event || window.event;
  // 获取鼠标移动时的坐标
  var moveX = event.pageX || event.clientX + document.documentElement.scrollLeft;
  var moveY = event.pageY || event.clientY + document.documentElement.scrollTop;
  // 鼠标移动时demo的位置坐标
  var demoX = moveX - innerX ;
  var demoY = moveY - innerY ;
  // 鼠标移动时demo的位置坐标
  demo.style.left = demoX + "px";
  demo.style.top = demoY + "px";
  //清除选中文字
       window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
  }
 };
 // 鼠标抬起清除拖拽效果
 document.onmouseup = function(){
  document.onmousemove = null ;
 };
   // 点击关闭按钮关闭跟随框
   close.onclick = function(){
   this.parentNode.parentNode.style.display = "none";
   };
 })(window)
</script>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
javascript 表单规则集合对象
Jul 21 Javascript
JS实现匀速运动的代码实例
Nov 29 Javascript
如何在JS中实现相互转换XML和JSON
Jul 19 Javascript
jquery实现折叠菜单效果【推荐】
Mar 08 Javascript
Java与JavaScript中判断两字符串是否相等的区别
Mar 13 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
Apr 11 Javascript
vue项目中公用footer组件底部位置的适配问题
May 10 Javascript
微信小程序实现自定义picker选择器弹窗内容
May 26 Javascript
layui radio性别单选框赋值方法
Aug 15 Javascript
angularjs性能优化的方法
Sep 05 Javascript
用vuex写了一个购物车H5页面的示例代码
Dec 04 Javascript
Angular性能优化之第三方组件和懒加载技术
May 10 Javascript
javascript 面向对象function详解及实例代码
Feb 28 #Javascript
正则验证小数点后面只能有两位数的方法
Feb 28 #Javascript
原生js实现鼠标跟随效果
Feb 28 #Javascript
canvas实现简易的圆环进度条效果
Feb 28 #Javascript
JS实现的tab切换选项卡效果示例
Feb 28 #Javascript
jQuery Pagination分页插件使用方法详解
Feb 28 #Javascript
完美解决input[type=number]无法显示非数字字符的问题
Feb 28 #Javascript
You might like
Ajax+PHP边学边练 之五 图片处理
2009/12/03 PHP
PHP学习之数组的定义和填充
2011/04/17 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
python re正则表达式模块(Regular Expression)
2014/07/16 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
详解python中的json和字典dict
2018/06/22 Python
Python Django基础二之URL路由系统
2019/07/18 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
签约仪式策划方案
2014/06/02 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
芙蓉镇观后感
2015/06/10 职场文书
红色电影观后感
2015/06/18 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
python实现socket简单通信的示例代码
2021/04/13 Python
如何理解及使用Python闭包
2021/06/01 Python
Python3中最常用的5种线程锁实例总结
2021/07/07 Python