原生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 相关文章推荐
ExtJS4中使用mixins实现多继承示例
Dec 03 Javascript
js获取 type=radio 值的方法
May 09 Javascript
12306验证码破解思路分享
Mar 25 Javascript
JS使用eval解析JSON的注意事项分析
Nov 14 Javascript
快速学习AngularJs HTTP响应拦截器
Dec 31 Javascript
jquery实现界面无刷新加载登陆注册
Jul 30 Javascript
AngularJS用户选择器指令实例分析
Nov 04 Javascript
javascript实现获取图片大小及图片等比缩放的方法
Nov 24 Javascript
jQuery中each循环的跳出和结束实例
Aug 16 jQuery
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
Sep 19 Javascript
详谈vue中router-link和传统a链接的区别
Jul 22 Javascript
Element Backtop回到顶部的具体使用
Jul 27 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
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
php入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
简单谈谈php中ob_flush和flush的区别
2014/11/27 PHP
Laravel 5 框架入门(三)
2015/04/09 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
Mootools 1.2教程 类(一)
2009/09/15 Javascript
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
2014/06/06 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
微信小程序 支付功能(前端)的实现
2017/05/24 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
python高级特性和高阶函数及使用详解
2018/10/17 Python
Python中extend和append的区别讲解
2019/01/24 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
关于Pytorch的MNIST数据集的预处理详解
2020/01/10 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
Raffaello Network德国:意大利拉斐尔时尚购物网
2019/05/01 全球购物
外语系毕业生自荐信范文
2013/12/16 职场文书
学生周末长期请假条
2014/02/15 职场文书
大学军训感言600字
2014/02/25 职场文书
商超业务员岗位职责
2014/03/12 职场文书
2014年化验员工作总结
2014/11/18 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书
SqlServer: 如何更改表的文件组?(进而改变存储位置)
2021/04/05 SQL Server
python如何利用cv2模块读取显示保存图片
2021/06/04 Python