HTML中如何拖动任一DIV 到任意位置,求简单实例代码

tiger呢喃 2017-02-14 02:17:30
HTML中如何拖动任一DIV 到任意位置,求简单实例代码,通俗易懂就行,不用太复杂
...全文
3660 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
深秋人 2017-06-14
  • 打赏
  • 举报
回复
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>鼠标移动div</title> <style type="text/css"> *{margin: 0;padding: 0;} #move{width: 100px;height: 100px;background: #369; position: absolute;left:100px;top:50px; } </style> </head> <body> <div id="move"></div> <script type="text/javascript"> // 获取元素对象 var move = document.getElementById('move'); //全局变量 var x = 0; var y = 0; var l = 0; var t = 0; var isDown = false;//当前是否 //绑定鼠标按下事件 move.onmousedown = function(e) { //获取当前鼠标的位置 x = e.clientX; y = e.clientY; //获取当前元素的top和left l = move.offsetLeft; t = move.offsetTop; //修改全局变量 isDown = true; } //绑定鼠标移动事件 window.onmousemove = function(e) { //判断当前鼠标是否按下 if(!isDown){return} //获取当前鼠标位置 var _x = e.clientX; var _y = e.clientY; //计算新的left和top var newL = _x-(x-l); var newT = _y-(y-t); //修改位置 move.style.left = newL+'px'; move.style.top = newT+'px'; } //绑定鼠标抬起事件 move.onmouseup = function() { //修改全局变量 isDown = false; } </script> </body> </html>
  • 打赏
  • 举报
回复
拖拽效果的实现主要是js实现,给个实例代码 $(function(){ var _move=false;//移动标记 var _x,_y;//鼠标离控件左上角的相对位置 $(".drag").click(function(){ //alert("click");//点击(松开后触发) }).mousedown(function(e){ _move=true; _x=e.pageX-parseInt($(".drag").css("left")); _y=e.pageY-parseInt($(".drag").css("top")); $(".drag").fadeTo(20, 0.5);//点击后开始拖动并透明显示 }); $(document).mousemove(function(e){ if(_move){ var x=e.pageX-_x;//移动时根据鼠标位置计算控件左上角的绝对位置 var y=e.pageY-_y; $(".drag").css({top:y,left:x});//控件新位置 } }).mouseup(function(){ _move=false; $(".drag").fadeTo("fast", 1);//松开鼠标后停止移动并恢复成不透明 }); }); 原文链接:http://www.duxinzhe.cn/web/JavaScript/40.html
tiger呢喃 2017-05-16
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
简单的就这样了,这个没有考虑滚动条

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8" />
	<title> 页面名称 </title>
<style type="text/css">
#div {
	position: absolute;
	left: 100px;
	top: 100px;
	width: 200px;
	height: 200px;
	background-color: #f60;
}
</style>
</head>
<body>
<div id="div"></div>
<script type="text/javascript">
var div = document.getElementById("div");
var dragFlag = false;
var x,y;

div.onmousedown = function (e) {
	e = e || window.event;
	x = e.clientX - div.offsetLeft;
	y = e.clientY - div.offsetTop;
	dragFlag = true;
};

document.onmousemove = function (e) {
	if (dragFlag) {
		e = e || window.event;
		div.style.left = e.clientX - x + "px";
		div.style.top  = e.clientY - y + "px";
	}
};

document.onmouseup = function (e) {
	dragFlag = false;
};

</script>
</body>
</html>
十分谢谢你的解答 但最后我用的方法如下代码 function findObj(theObj, theDoc) { var p, i, foundObj; if(!theDoc) theDoc = document; if( (p = theObj.indexOf("?")) > 0 && parent.frames.length) { theDoc = parent.frames[theObj.substring(p+1)].document; theObj = theObj.substring(0,p); } if(!(foundObj = theDoc[theObj]) && theDoc.all) foundObj = theDoc.all[theObj]; for (i=0; !foundObj && i < theDoc.forms.length; i++) foundObj = theDoc.forms[i][theObj]; for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++) foundObj = findObj(theObj,theDoc.layers[i].document); if(!foundObj && document.getElementById) foundObj = document.getElementById(theObj); return foundObj; } //添加一个参与人填写行 function AddSignRow(){ //读取最后一行的行号,存放在txtTRLastIndex文本框中 var txtTRLastIndex = findObj("txtTRLastIndex",document); var rowID = parseInt(txtTRLastIndex.value); var signFrame = findObj("tableDetail",document); //添加行 var newTR = signFrame.insertRow(signFrame.rows.length); newTR.id = "SignItem" + rowID; //添加列:序号 var newNameTD=newTR.insertCell(0); //添加列内容 newNameTD.innerHTML = newTR.rowIndex.toString(); //添加列:添加项目按钮 var newNameTD=newTR.insertCell(1); //添加列内容 newNameTD.innerHTML = "<div align='center' style='width:40px'><a href='javascript:;' onclick=\"addTr("+rowID+")\">选择条目" + rowID + "</a></div>"; var newNameTD=newTR.insertCell(2); //添加列内容 newNameTD.innerHTML = "<input name='jiFenXmId' id='jiFenXmId" + rowID + "' type='hidden' readonly='true'/>" +"<input name='jiFenXmName' id='jiFenXmName" + rowID + "' type='text' readonly='true'/>"; //添加列:作业次数 var newEmailTD=newTR.insertCell(3); //添加列内容 newEmailTD.innerHTML = "<input id='count" + rowID + "' name='count' onkeydown=\"onlyNum();\" style='ime-mode:Disabled' />"; //添加列:项目单位 var newTelTD=newTR.insertCell(4); //添加列内容 newTelTD.innerHTML = "<input name='jiFenXmDw' id='jiFenXmDw" + rowID + "' type='text' readonly='true'/>"; //添加列:删除按钮 var newDeleteTD=newTR.insertCell(5); //添加列内容 newDeleteTD.innerHTML = "<div align='center' style='width:40px'><a href='javascript:;' onclick=\"DeleteSignRow('SignItem" + rowID + "')\">删除</a></div>"; //将行号推进下一行 txtTRLastIndex.value = (rowID + 1).toString() ; } //删除指定行 function DeleteSignRow(rowid){ var signFrame = findObj("tableDetail",document); var signItem = findObj(rowid,document); //获取将要删除的行的Index var rowIndex = signItem.rowIndex; //删除指定Index的行 signFrame.deleteRow(rowIndex); //重新排列序号,如果没有序号,这一步省略 for(i=rowIndex;i<signFrame.rows.length;i++){ signFrame.rows[i].cells[0].innerHTML = i.toString(); } }//清空列表 function ClearAllSign(){ if(confirm('确定要清空所有录入项目吗?')){ var signFrame = findObj("tableDetail",document); var rowscount = signFrame.rows.length; //循环删除行,从最后一行往前删除 for(i=rowscount - 1;i > 0; i--){ signFrame.deleteRow(i); } //重置最后行号为1 var txtTRLastIndex = findObj("txtTRLastIndex",document); txtTRLastIndex.value = "1"; //预添加一行 AddSignRow(); } }
  • 打赏
  • 举报
回复
jquery 的drag 插件,很简单
天际的海浪 2017-02-14
  • 打赏
  • 举报
回复
简单的就这样了,这个没有考虑滚动条

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8" />
	<title> 页面名称 </title>
<style type="text/css">
#div {
	position: absolute;
	left: 100px;
	top: 100px;
	width: 200px;
	height: 200px;
	background-color: #f60;
}
</style>
</head>
<body>
<div id="div"></div>
<script type="text/javascript">
var div = document.getElementById("div");
var dragFlag = false;
var x,y;

div.onmousedown = function (e) {
	e = e || window.event;
	x = e.clientX - div.offsetLeft;
	y = e.clientY - div.offsetTop;
	dragFlag = true;
};

document.onmousemove = function (e) {
	if (dragFlag) {
		e = e || window.event;
		div.style.left = e.clientX - x + "px";
		div.style.top  = e.clientY - y + "px";
	}
};

document.onmouseup = function (e) {
	dragFlag = false;
};

</script>
</body>
</html>

61,129

社区成员

发帖
与我相关
我的任务
社区描述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
社区管理员
  • HTML(CSS)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧