拖动不了~
<!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 星