为了账号安全,请及时绑定邮箱和手机立即绑定

用上下左右控制游动,不超过边界,左边上边实现了,下边右边怎么解决

用上下左右控制游动,不超过边界,左边上边实现了,下边右边怎么解决

秋高水长 2016-04-11 08:48:02
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>follow me</title> <style> #border{ width:300px; height:500px; border:1px red solid; margin:50px auto; position:relative; } #kuai{ height:20px; width:20px; border-radius:10px; border:1px red solid; background:green; position:absolute; } </style> </head> <body> <div id="border">     <div id='kuai'>     </div> </div> </body> <script> var border=document.getElementById('border'); var div=document.getElementById('kuai'); //跟随鼠标移动 /*document.onmousemove=function (ev){ var Event=ev||event; div.style.left=Event.clientX+'px'; div.style.top=Event.clientY+'px'; }*/ //方向键控制 var w,a,s,d; var timer=null; timer=setInterval(function (){ if(s){ div.style.top=div.offsetTop-10+'px'; if(div.offsetTop<=0){ //alert(''); div.style.top=0; } } if(w){ div.style.top=div.offsetTop+10+'px'; } if(a){ div.style.left=div.offsetLeft-10+'px'; if(div.offsetLeft<=0){ //alert(''); div.style.left=0; } } if(d){ div.style.left=div.offsetLeft+10+'px'; } },40) document.onkeydown=function(ev){ var Event=ev||event; switch(Event.keyCode){ case 37: a=true; break; case 38: s=true; break; case 39: d=true; break; case 40: w=true; break; } } document.onkeyup=function(ev){ var Event=ev||event; switch(Event.keyCode){ case 37: a=false; break; case 38: s=false; break; case 39: d=false; break; case 40: w=false; break; } } </script> </html>
查看完整描述

1 回答

已采纳
?
李晓健

TA贡献1036条经验 获得超461个赞

获取到 border 的宽和高,根据它的宽和高就能算出右边界和下边界呀,计算时还需要考虑div自身的宽和高。

查看完整回答
反对 回复 2016-04-11
  • 秋高水长
    秋高水长
    这个我以前试过,但是实现的不是想要的 if(div.offsetLeft>=280){ div.style.right=0; //alert(''); } 照样是完美通过 感觉上div.style.right=0;都没起到作用
  • 李晓健
    李晓健
    这个你就只能打断点去调了,看看哪里的值和你预想的不一样,找到原因,就好改了。
  • 秋高水长
    秋高水长
    这两天比较忙,刚着手改,改好了,还是需要用left或者top,用right和bottom不能实现
  • 1 回答
  • 0 关注
  • 1588 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信