原生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 相关文章推荐
自定义右键属性覆盖浏览器默认右键行为实现代码
Feb 02 Javascript
jQuery中parentsUntil()方法用法实例
Jan 07 Javascript
jQuery中next方法用法实例
Apr 24 Javascript
jQuery对JSON数据进行排序输出的方法
Jun 24 Javascript
require.js的用法详解
Oct 20 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
May 19 Javascript
Javascript基础_简单比较undefined和null 值
Jun 14 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
Sep 21 Javascript
JavaScript 函数节流详解及方法总结
Feb 09 Javascript
vue 实现数字滚动增加效果的实例代码
Jul 06 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
Sep 14 Javascript
JS使用cookie保存用户登录信息操作示例
May 30 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实现二分查找算法代码分享
2011/06/24 PHP
php模板函数 正则实现代码
2012/10/15 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
2014/04/01 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
vue获取当前点击的元素并传值的实例
2018/03/09 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
2020/02/10 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
[00:43]FTP典藏礼包 DOTA2三大英雄霸气新套装
2014/03/21 DOTA
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
详解Python中__str__和__repr__方法的区别
2015/04/17 Python
python获取本地计算机名字的方法
2015/04/29 Python
总结Python编程中函数的使用要点
2016/03/20 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
python代码编写计算器小程序
2020/03/30 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
Html5新增标签有哪些
2017/04/13 HTML / CSS
巴西手表购物网站:eclock
2019/03/19 全球购物
NBA欧洲商店(西班牙):NBA Europe Store ES
2019/04/16 全球购物
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
大学生职业生涯规划书汇总
2014/03/20 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
聘任证明怎么写
2015/03/02 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书