问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

H5 JS如何同时控制两个div块移动?

发布网友 发布时间:2022-04-07 05:41

我来回答

2个回答

懂视网 时间:2022-04-07 10:02

描述:

div通过键盘事件上下左右实现div块的移动

效果:

9ad88c8ff0ad0ea71b1d04528c315d2.png

(视频教程推荐:js视频教程)

js代码:

var Method=(function () {
 return {
 EVENT_ID:"event_id",
 loadImage:function (arr) {
 var img=new Image();
 img.arr=arr;
 img.list=[];
 img.num=0;
// 如果DOM对象下的事件侦听没有被删除掉,将会常驻堆中
// 一旦触发了这个事件需要的条件,就会继续执行事件函数
 img.addEventListener("load",this.loadHandler);
 img.self=this;
 img.src=arr[img.num];
 },
 loadHandler:function (e) {
 this.list.push(this.cloneNode(false));
 this.num++;
 if(this.num>this.arr.length-1){
 this.removeEventListener("load",this.self.loadHandler);
 var evt=new Event(Method.EVENT_ID);
 evt.list=this.list;
 document.dispatchEvent(evt);
 return;
 }
 this.src=this.arr[this.num];
 },
 $c:function (type,parent,style) {
 var elem=document.createElement(type);
 if(parent) parent.appendChild(elem);
 for(var key in style){
 elem.style[key]=style[key];
 }
 return elem;
 },
 divColor: function () {
 var col="#";//这个字符串第一位为# 颜色的格式
 for(var i=0;i<6;i++){
 col+=parseInt(Math.random()*16).toString(16);//rondom*16后的随机值即为0-1*16==0-16; toString(16)为转化为16进制
 }
 return col;//最后返回一个七位的值 格式即为#nnnnnn 颜色的格式
 },
 random:function (min,max) {
 max=Math.max(min,max);
 min=Math.min(min,max);
 return Math.floor(Math.random()*(max-min)+min);
 },
 dragElem:function (elem) {
 elem.addEventListener("mousedown",this.mouseDragHandler);
 elem.self=this;
 },
 removeDrag:function (elem) {
 elem.removeEventListener("mousedown",this.mouseDragHandler);
 },
 mouseDragHandler:function (e) {
 if(e.type==="mousedown"){
 e.stopPropagation();
 e.preventDefault();
 document.point={x:e.offsetX,y:e.offsetY};
 document.elem=this;
 this.addEventListener("mouseup",this.self.mouseDragHandler);
 document.addEventListener("mousemove",this.self.mouseDragHandler);
 }else if(e.type==="mousemove"){
 this.elem.style.left=e.x-this.point.x+"px";
 this.elem.style.top=e.y-this.point.y+"px";
 }else if(e.type==="mouseup"){
 this.removeEventListener("mouseup",this.self.mouseDragHandler);
 document.removeEventListener("mousemove",this.self.mouseDragHandler);
 }
 }
 }
})();

html代码:

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <script src="js/Method.js"></script>
</head>
<body>
<script>
 var div;
 var code=[];
 var speed=2;
 var bool=false;
 init();
 function init() {
 div=Method.$c("div",document.body,{
 width:"50px",
 height:"50px",
 backgroundColor:"red",
 position:"absolute",
 left:0,
 top:0
 });
 window.addEventListener("keydown",keyHandler);
 window.addEventListener("keyup",keyHandler);
 setInterval(animation,16);
 }
 
 function keyHandler(e) {
 if(e.type==="keydown" && (!bool || code.indexOf(e.keyCode)===-1)){
 bool=true;
 code.push(e.keyCode);
 }else if(e.type==="keyup"){
 bool=false;
 code.length=0;
 }
 }
 
 function animation() {
 if(!bool)return;
 for(var i=0;i<code.length;i++){
 switch (code[i]){
 case 37:
  div.style.left=div.offsetLeft-speed+"px";
  break;
 case 38:
  div.style.top=div.offsetTop-speed+"px";
  break;
 case 39:
  div.style.left=div.offsetLeft+speed+"px";
  break;
 case 40:
  div.style.top=div.offsetTop+speed+"px";
  break;
 }
 }
 }
</script>
</body>
</html>

推荐教程:js入门教程

热心网友 时间:2022-04-07 07:10

是按键冲突造成的。
如果是使用if判断按键标识,那么就会出现这样问题,因为if分支不会继续往下走了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人大政协辅助岗是什么 政务辅助人员是干什么 政府辅助人员是什么 努比亚的海拔什么意思 北非努比亚现在怎么样了啊 相邻权的相关法律 梦见老公离世了什么预兆 梦见自己老公走掉 你出轨后 怎么操作才没被发现? 评评怎么造句 线性24口千兆交换机带宽需要48Gbps,包转发率:35.7Mpps,就行了,为什么许多交换机的参数比这个大好多 24口交换机背板带宽多大好 某交换机有24个固定的千兆端口,其端口总带宽为多少MBPS,具体是怎么算的 千兆光纤转换器是否可以带动千兆16口交换机? 一台交换机具有16个100&#47;1000Mbps全双工下联端口,它的上联端口带宽至少应为多少? 16端口100Mbps交换机最大背板交换带宽多少 一台交换机有16个100BASE-TXRJ45端口,总线的交换带宽是多少 16个千兆端口和4个万兆端口的交换机背板带宽是多少 一台16口的80Mb&#47;s交换机,全双工传输模式,那么这台交换机的总带宽为多少? 支付宝基金怎么算赚了多少 剁椒鱼头做法以及配料 在做剁椒鱼头的时候,需要准备哪些食材和调料? 在支付宝购买基金一天亏损三百多可以看出基金里有多少钱? 支付宝基金卖出收益怎么看 支付宝基金怎么看收益 元宵节的来历,要简短一些,就是概括来历的故事!急!!! 支付宝怎么查看已经卖出的基金收益 北京华联超市会员怎么注销? 注册会员如何取消? 快鱼的会员卡怎么注销 32Gbps的背板带宽的全千兆交换机可以负载多少个摄像头? 千兆交换机端口理论最大流量是多少MB字节?在多少流量算正常运行?多大后算拥堵? 哪里有免费腾讯vip_免费腾讯视频vip账号 从哪里能找到免费的会员看腾讯视频? 剥了皮的苹果,梨,香蕉怎样放的久 削好皮的苹果和雪梨用盐水泡一下吃可以吗 咸鱼卖A货,被系统说违规了商品刚发布就被系统说发布假冒产品,如果不申诉,会被抓吗? 闲鱼违规侵商标权第一次删除商品了,不申诉有事没,会不会被起诉? 闲鱼被处罚不申诉会永久冻结吗? 闲鱼上面违规了自己不解决会自己删除么? 融合通信手机互拨优惠功能包怎么使用- 问一问 移动的融合通信业务有必要开通吗 移动融合通信需要更换手机吗 16年第1OO期双色球中奖号码是多少 福彩双双色球2015年第一百期的开奖号码是多少 2016年第100期双色球开奖结果 双色球开奖2015100结果 明天双色球开奖号码多少 双色球第20150100期开奖结果 如何用Javascript控制div的位置?