原生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 相关文章推荐
javawscript 三级菜单的实现原理
Jul 01 Javascript
javascript 数组排序函数
Aug 20 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
Mar 31 Javascript
jQuery控制TR显示隐藏的几种方法
Jun 18 Javascript
XML、HTML、CSS与JS的区别整理
Feb 18 Javascript
基于bootstrap插件实现autocomplete自动完成表单
May 07 Javascript
javascript表达式和运算符详解
Feb 07 Javascript
vue如何引用其他组件(css和js)
Apr 13 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
Nov 05 Javascript
Vue项目history模式下微信分享爬坑总结
Mar 29 Javascript
微信小程序 授权登录详解(附完整源码)
Aug 23 Javascript
vue图片加载失败时用默认图片替换的方法
Aug 29 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面向对象全攻略 (九)访问类型
2009/09/30 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
2017/04/04 PHP
PHP CURL与java http使用方法详解
2018/01/26 PHP
php探针不显示内存解决方法
2019/09/17 PHP
JavaScript中的私有/静态属性介绍
2012/07/26 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
2016/05/16 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
Python的函数的一些高阶特性
2015/04/27 Python
python计算一个序列的平均值的方法
2015/07/11 Python
python3多线程知识点总结
2019/09/26 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
行政助理岗位职责
2013/11/10 职场文书
预备党员党课思想汇报
2014/01/13 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
个人思想政治总结
2015/03/05 职场文书
国富论读书笔记
2015/06/26 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
Win11软件图标固定到任务栏
2022/04/19 数码科技
python小型的音频操作库mp3Play
2022/04/24 Python