最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js實現(xiàn)上下左右鍵盤控制div移動

 更新時間:2020年01月16日 11:17:51   作者:SSSkyCong  
這篇文章主要為大家詳細介紹了js實現(xiàn)上下左右鍵盤控制div移動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了js上下左右鍵盤控制div移動的具體代碼,供大家參考,具體內(nèi)容如下

描述:

div通過鍵盤事件上下左右實現(xiàn)div塊的移動

效果: 

實現(xiàn):

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對象下的事件偵聽沒有被刪除掉,將會常駐堆中
//      一旦觸發(fā)了這個事件需要的條件,就會繼續(xù)執(zhí)行事件函數(shù)
      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)為轉(zhuǎn)化為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 lang="en">
<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>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript添加隨滾動條滾動窗體的方法

    JavaScript添加隨滾動條滾動窗體的方法

    這篇文章主要介紹了JavaScript添加隨滾動條滾動窗體的方法,涉及JavaScript事件響應(yīng)及頁面元素動態(tài)操作相關(guān)技巧,需要的朋友可以參考下
    2016-02-02
  • JavaScript使用canvas繪制隨機驗證碼

    JavaScript使用canvas繪制隨機驗證碼

    這篇文章主要為大家詳細介紹了JavaScript使用canvas繪制隨機驗證碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • JavaScript實現(xiàn)圖片懶加載(Lazyload)

    JavaScript實現(xiàn)圖片懶加載(Lazyload)

    這篇文章主要介紹了JavaScript實現(xiàn)圖片懶加載(Lazyload)的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • 一個精簡的JS DIV層tab切換代碼

    一個精簡的JS DIV層tab切換代碼

    下面的代碼是比較精簡的js tab切換代碼,原理也比較簡單。
    2010-03-03
  • IntersectionObserver實現(xiàn)圖片懶加載的示例

    IntersectionObserver實現(xiàn)圖片懶加載的示例

    下面小編就為大家?guī)硪黄狪ntersectionObserver實現(xiàn)圖片懶加載的示例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 老生常談?wù)谡謱?滾動條的問題

    老生常談?wù)谡謱?滾動條的問題

    小編遇到的問題是在彈出層后面的 遮罩層,因為有滾動條,導致滾動條下面不可視區(qū)域沒有遮罩層。下面就為大家介紹一下解決方法
    2016-04-04
  • JavaScript實現(xiàn)輪播圖案例

    JavaScript實現(xiàn)輪播圖案例

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)輪播圖案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • ES6 exports與import導出模塊使用基礎(chǔ)示例

    ES6 exports與import導出模塊使用基礎(chǔ)示例

    這篇文章主要為大家介紹了ES6 exports與import導出模塊使用基礎(chǔ)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • jsonp跨域獲取百度聯(lián)想詞的方法分析

    jsonp跨域獲取百度聯(lián)想詞的方法分析

    這篇文章主要介紹了jsonp跨域獲取百度聯(lián)想詞的方法,結(jié)合實例形式分析了jsonp的原理及跨域獲取百度聯(lián)想詞的相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • 關(guān)于promise和async用法以及區(qū)別詳解

    關(guān)于promise和async用法以及區(qū)別詳解

    Promise是一個構(gòu)造函數(shù),我們就可以new Promise()得到一個 Promise的實例,下面這篇文章主要給大家介紹了關(guān)于promise和async用法以及區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2023-01-01

最新評論

黄山市| 清新县| 攀枝花市| 桦甸市| 桓台县| 安康市| 祁连县| 贡嘎县| 囊谦县| 云林县| 康保县| 康保县| 新乡县| 沂源县| 彭山县| 武宣县| 黑山县| 奎屯市| 浦北县| 曲周县| 郧西县| 高陵县| 德安县| 平泉县| 宁德市| 隆昌县| 五台县| 紫金县| 临高县| 甘孜县| 宜章县| 鄯善县| 高清| 龙江县| 双峰县| 克山县| 富川| 镇康县| 荃湾区| 且末县| 安多县|