#div1 {
width: 100px;
height: 100px;
background: red;
position: absolute;
}

  html

<div id="div1">
</div>

  js

     window.onload = function () {
var oDiv = document.getElementById('div1');
//pc端
oDiv.onmousedown = function (ev) {
var oEvent = ev || event; //需要获取和事件相关的信息时使用
var disX = oEvent.clientX - oDiv.offsetLeft;
var disY = oEvent.clientY - oDiv.offsetTop; document.onmousemove = function (ev) {
var oEvent = ev || event;
var l = oEvent.clientX - disX;
var t = oEvent.clientY - disY; if (l < 0) {
l = 0;
} else if (l > document.documentElement.clientWidth - oDiv.offsetWidth) {
l = document.documentElement.clientWidth - oDiv.offsetWidth;
} if (t < 0) {
t = 0;
} else if (t > document.documentElement.clientHeight - oDiv.offsetHeight) {
t = document.documentElement.clientHeight - oDiv.offsetHeight;
} oDiv.style.left = l + 'px';
oDiv.style.top = t + 'px';
}; document.onmouseup = function () {
document.onmousemove = null;
document.onmouseup = null;
};
};
//移动端
// 拖拽
// 获取节点
var block = document.getElementById("right");
var oW, oH;
// 绑定touchstart事件
oDiv.addEventListener("touchstart", function (e) {
var touches = e.touches[0];
oW = touches.clientX - oDiv.offsetLeft;
oH = touches.clientY - oDiv.offsetTop;
//阻止页面的滑动默认事件
document.addEventListener("touchmove", defaultEvent, false);
}, false);
oDiv.addEventListener("touchmove", function (e) {
var touches = e.touches[0];
var oLeft = touches.clientX - oW;
var oTop = touches.clientY - oH;
if (oLeft < 0) {
oLeft = 0;
} else if (oLeft > document.documentElement.clientWidth - oDiv.offsetWidth) {
oLeft = (document.documentElement.clientWidth - oDiv.offsetWidth);
}
oDiv.style.left = oLeft + "px";
oDiv.style.top = oTop + "px";
}, false);
oDiv.addEventListener("touchend", function () {
document.removeEventListener("touchmove", defaultEvent, false);
}, false); function defaultEvent(e) {
e.preventDefault();
};
};

最新文章

  1. Cesium应用篇:3控件(3)SelectionIndicator&amp; InfoBox
  2. C语言中的++和--
  3. sql 数据库换行
  4. 关闭Centos的自动更新
  5. html5、css3及响应式设计入门
  6. Ubuntu配置OpenStack 一:主机环境配置以及问题总结
  7. ES6中promise的使用方法
  8. (一〇一)集成静态库RHAddressBook实现OC访问通讯录
  9. 2017GCTF部分writeup
  10. java 接口实现防盗门功能
  11. java springboot2 jquery 抽奖项目源码
  12. 初学版本控制更新Version control
  13. day40数据库之表的相关操作
  14. nginx代理tomcat做负载
  15. LeetCode: Largest Number 解题报告 以及Comparator, CompareTo 应用
  16. 开发前奏曲之添加Android SDK平台工具
  17. 试水jdk8 stream
  18. @property装饰器的用法【python】
  19. XE7 数据库独立运行需要的文件
  20. 用Chrome在手机上调试本地网页代码

热门文章

  1. Android--MP3播放器MediaPlayer
  2. web前端安全
  3. PC逆向之代码还原技术,第一讲基本数据类型在内存中的表现形式.浮点,指针寻址公式
  4. 【API知识】一种你可能没见过的Controller形式
  5. [五]类加载机制双亲委派机制 底层代码实现原理 源码分析 java类加载双亲委派机制是如何实现的
  6. [Code+#3] 寻找车位
  7. Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件
  8. 【Parallel】.Net 并行执行程序的使用心得
  9. Android开发——获得Json数据,并显示图片
  10. gulp前端自动化构建并上传oss