js如何实现利用键盘控制div移动


当前第2页 返回上一页

js代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

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代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

<!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入门教程

以上就是js如何实现利用键盘控制div移动的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

介绍js 表单提交信息加密

html怎么设置div边距

css实现div背景色闪烁效果

div css顶部固定不动的实现方法

在 vue 中使用分页

js 代码要不要加分号?

js如何修改注册表

怎么获取json的key

js正则表达式之限1-2位整数或者至多含有两位小数的写法

介绍js实现五子棋界面设计

更多相关阅读请进入《js》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...