原生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 相关文章推荐
基于jQuery的日期选择控件
Oct 27 Javascript
JS下拉框内容左右移动效果的具体实现
Jul 10 Javascript
javascript设置连续两次点击按钮时间间隔的方法
Oct 28 Javascript
JavaScript中的各种操作符使用总结
May 26 Javascript
jQuery中map函数的两种方式
Apr 07 jQuery
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
Aug 23 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
Sep 18 Javascript
JavaScript实现单例模式实例分享
Dec 22 Javascript
vue.js与后台数据交互的实例讲解
Aug 08 Javascript
浅谈VUE单页应用首屏加载速度优化方案
Aug 28 Javascript
layer弹出子iframe层父子页面传值的实现方法
Nov 22 Javascript
2019年度web前端面试题总结(主要为Vue面试题)
Jan 12 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遍历目录viewDir函数
2009/12/15 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
Joomla开启SEF的方法
2016/05/04 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
Vue脚手架的简单使用实例
2018/07/10 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
python取代netcat过程分析
2018/02/10 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
python读取文件名并改名字的实例
2019/01/07 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
python实现超市商品销售管理系统
2019/11/22 Python
python基于opencv检测程序运行效率
2019/12/28 Python
Python数据正态性检验实现过程
2020/04/18 Python
python操作toml文件的示例代码
2020/11/27 Python
测试工程师职业规划书
2014/02/06 职场文书
知识竞赛主持词
2014/03/26 职场文书
防灾减灾活动总结
2014/08/30 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
超市采购员岗位职责
2015/04/07 职场文书
表彰大会新闻稿
2015/07/17 职场文书
学习委员竞选稿
2015/11/20 职场文书
导游词之张家界
2019/10/31 职场文书
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python