原生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 小数取整的函数
May 10 Javascript
DLL+ ActiveX控件+WEB页面调用例子
Aug 07 Javascript
node.js中的buffer.slice方法使用说明
Dec 10 Javascript
浅谈jquery.fn.extend与jquery.extend区别
Jul 13 Javascript
干货分享:让你分分钟学会javascript闭包
Dec 25 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
Apr 07 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
Jun 03 Javascript
微信小程序日历组件calendar详解及实例
Jun 08 Javascript
深入理解vue.js中$watch的oldvalue与newValue
Aug 07 Javascript
基于js 本地存储(详解)
Aug 16 Javascript
基于vue实现分页效果
Nov 06 Javascript
详解javascript脚本何时会被执行
Feb 05 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
PHP 5.0 Pear安装方法
2006/12/06 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
Laravel timestamps 设置为unix时间戳的方法
2019/10/11 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
JavaScript 事件对象的实现
2009/07/13 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
jQuery对象与DOM对象之间的相互转换
2015/03/03 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
Angular2 组件通信的实例代码
2017/06/23 Javascript
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
微信小程序解除10个请求并发限制
2018/12/18 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
python使用正则搜索字符串或文件中的浮点数代码实例
2014/07/11 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
python快排算法详解
2019/03/04 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
高考考python编程是真的吗
2020/07/20 Python
奥地利网上书店:Weltbild
2017/07/14 全球购物
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
Vero Moda西班牙官方购物网站:丹麦BESTSELLER旗下知名女装品牌
2018/04/27 全球购物
大一期末自我鉴定
2013/12/13 职场文书
总经理任命书
2014/03/29 职场文书
2014年小学体育工作总结
2014/12/11 职场文书
英文感谢信范文
2015/01/21 职场文书
党员理论学习心得体会
2016/01/21 职场文书
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript