拖动不了~
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
*{
margin:0;
padding: 0;
}
#main{
width:200px;
height:200px;
background: yellow;
position: absolute;
top:100px;
left:100px;
-webkit-user-select: none;
}
</style>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div id="main">
我能被拖动
</div>
<script type="text/javascript">
// 此处写代码
var Move=false;
var last={};
$("#main").on("mousedown",function(e){
Move=true;
last.x=e.pageX;
last.y=e.pageY;
}).on("mousemove",function(e){
if(Move && $("main").top+$("main").height<window.height){
var targetX=parseInt($("main").css("left"))+e.pageX-last.x;
var targetY=parseInt($("main").css("top"))+e.pageY-last.y;
$("main").css("left",targetX+"px");
$("main").css("top",targetY+"px");
last.x=e.pageX;
last.y=e.pageY;
}
}).on("mouseup",function(){
Move=false;
last={}
})
</script>
</body>
</html>
正在回答 回答被采纳积分+1
你好,代码中的问题:
1、在mousemove事件中判断条件建议分开写,因为目前只判断垂直方向最底部的,垂直方向顶部和左右方向是没有判断的。
2、获取main元素是$("#main"),前面需要添加#选择器。
3、获取window的高度,应该使用$(window).height()。
4、建议将mousemove和mouseup事件绑定在document页面上,这样可以防止鼠标移动过快,在其他地方抬起,再次移入元素的时候造成错误。
可以参考下面修改的代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> * { margin: 0; padding: 0; } #main { width: 200px; height: 200px; background: yellow; position: absolute; top: 100px; left: 100px; -webkit-user-select: none; } </style> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> </head> <body> <div id="main"> 我能被拖动 </div> <script type="text/javascript"> // 此处写代码 var Move = false; var last = {}; $("#main").on("mousedown", function(e) { Move = true; last.x = e.pageX; last.y = e.pageY; }) $(document).on("mousemove", function(e) { if (Move) { var targetX = parseInt($("#main").css("left")) + e.pageX - last.x; var targetY = parseInt($("#main").css("top")) + e.pageY - last.y; if (targetY + $("#main").height() >= $(window).height()) { targetY = $(window).height() - $("#main").height(); } else if (targetY < 0) { targetY = 0 } if (targetX + $("#main").width() >= $(window).width()) { targetX = $(window).width() - $("#main").width(); } else if (targetX < 0) { targetX = 0 } $("#main").css("left", targetX + "px"); $("#main").css("top", targetY + "px"); last.x = e.pageX; last.y = e.pageY; } }).on("mouseup", function() { Move = false; last = {} }) </script> </body> </html>
自己可以重新测试下,祝学习愉快!
欢迎采纳~
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 467 份
- 解答问题 4826 个
本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星