js-元素拖拽属性案例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
img {
position: absolute;
width: 300px;
height: 200px;
background-color: red;
}
body {
height: 3000px;
}
</style>
<script type="text/javascript">
window.onload = function() {
//需求:鼠标按在div上 并移动, div就跟随鼠标移动
var div = document.getElementsByTagName('img')[0];
//1 按住鼠标
div.onmousedown = function(e) {
var ev = window.event || e;
//相对于html文档
// console.log(ev.pageX,ev.pageY)
//相对于屏幕
// console.log(ev.clientX,ev.clientY)
//兼容处理 没有滚动条可以不用
var sT = document.documentElement.scrollTop || document.body.scrollTop;
var sL = document.documentElement.scrollLeft || document.body.scrollLeft;
//计算鼠标位置 差
var a = ev.clientY + sT - this.offsetTop;
var b = ev.clientX + sL - this.offsetLeft;
//ie6- 使用全局捕获解决拖拽问题
if (this.setCapture) {
this.setCapture();
}
//3 拖动
document.onmousemove = function(e) {
var ev = window.event || e;
//获取鼠标位置
var sT = document.documentElement.scrollTop || document.body.scrollTop;
var sL = document.documentElement.scrollLeft || document.body.scrollLeft;
var x = ev.clientX + sL;
var y = ev.clientY + sT;
var dx = x - b;
var dy = y - a;
//限制移动区域
//上
if (dy <= 0) {
dy = 0;
}
//左
if (dx <= 0) {
dx = 0;
}
//右
if (dx >= document.documentElement.clientWidth + sL - div.clientWidth) {
dx = document.documentElement.clientWidth + sL - div.clientWidth;
}
//下
if (dy >= document.documentElement.clientHeight + sT - div.clientHeight) {
dy = document.documentElement.clientHeight + sT - div.clientHeight
}
//设置位置
div.style.left = dx + 'px';
div.style.top = dy + 'px';
return false; //防止拖拽图片和文字的时候出现的bug
}
}
//抬起鼠标
div.onmouseup = function() {
//取消事件
document.onmousemove = null;
if (this.releaseCapture) {
this.releaseCapture(); //释放捕获
}
}
}
</script>
</head>
<body>
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1586348889091&di=7f1c3c853bcaee2ef9bdd98e87d19be6&imgtype=0&src=http%3A%2F%2Fcdn.wecarepet.net%2Fupload%2Fimage_26_1458374949521.jpeg">
</body>
</html>
本文来自博客园,作者:JackieDYH,转载请注明原文链接:https://www.cnblogs.com/JackieDYH/p/17634766.html
标签:
javascript
, 素拖拽属性
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现