原生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 相关文章推荐
js GridView 实现自动计算操作代码
Mar 25 Javascript
node.js中使用socket.io制作命名空间
Dec 15 Javascript
js实现仿百度瀑布流的方法
Feb 05 Javascript
jquery实现简单的遮罩层
Jan 08 Javascript
javascript常用经典算法详解
Jan 11 Javascript
JavaScript基础进阶之数组方法总结(推荐)
Sep 04 Javascript
JS的函数调用栈stack size的计算方法
Jun 24 Javascript
详解webpack2异步加载套路
Sep 14 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
Aug 21 Javascript
详解vue项目接入微信JSSDK的坑
Dec 14 Javascript
Vue 列表上下过渡效果的实例代码
Jun 25 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
Dec 09 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
回首过去10年中最搞笑的10部动漫,哪一部让你节操尽碎?
2020/03/03 日漫
神族 Protoss 剧情介绍
2020/03/14 星际争霸
php获取mysql数据库中的所有表名的代码
2011/04/23 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
浅析PHP文件下载原理
2014/12/25 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
学习node.js 断言的使用详解
2019/03/18 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
关于反爬虫的一些简单总结
2017/12/13 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
Python logging模块原理解析及应用
2020/08/13 Python
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
竞选副班长演讲稿
2014/04/24 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android