js鍵盤控制DIV移動

来源:http://www.cnblogs.com/shouce/archive/2016/01/18/5138249.html
-Advertisement-
Play Games

上:↑ 下:↓ 左:← 右:→Ctrl + 1 : 背景變為綠色Ctrl + 2 : 背景變為黃色Ctrl + 3 : 背景變為藍色Ctrl + ↑ : 放大Ctrl + ↓ : 縮小 //被移動的方塊【DIV】


<style type="text/css"> 
html,body{overflow:hidden;}
body{margin:0;padding:0;}
pre{color:green;padding:10px 15px;background:#f0f0f0;border:1px dotted #333;font:12px/1.5 Courier New;margin:12px;}
span{color:#999;}
#box{position:absolute;top:50px;left:300px;width:100px;height:100px;background:red;}
</style>

 


<script type="text/javascript"> 
window.onload = function ()
{
	var oBox = document.getElementById("box");
	var bLeft = bTop = bRight = bBottom = bCtrlKey = false;

	setInterval(function ()
	{
	if (bLeft)
	{
	oBox.style.left = oBox.offsetLeft - 10 + "px"
	}
	else if (bRight)
	{
	oBox.style.left = oBox.offsetLeft + 10 + "px"
	}

	if (bTop)
	{
	oBox.style.top = oBox.offsetTop - 10 + "px" 
	}
	else if(bBottom)
	{
	oBox.style.top = oBox.offsetTop + 10 + "px"
	}
	//防止溢出
limit();
	},30); 

	document.onkeydown = function (event)
	{
	var event = event || window.event;
	bCtrlKey = event.ctrlKey;

	switch (event.keyCode)
	{
	case 37:
	bLeft = true;
	break;
	case 38:
	if(bCtrlKey)
	{
	var oldWidth = oBox.offsetWidth;
	var oldHeight = oBox.offsetHeight;

	oBox.style.width = oBox.offsetWidth * 1.5 + "px";
	oBox.style.height = oBox.offsetHeight * 1.5 + "px"; 

	oBox.style.left = oBox.offsetLeft - (oBox.offsetWidth - oldWidth) / 2 + "px";
	oBox.style.top = oBox.offsetTop - (oBox.offsetHeight - oldHeight) / 2 + "px";

	break; 
	}
	bTop = true;
	break;
	case 39:
	bRight = true;
	break;
	case 40:
	if(bCtrlKey)
	{
	var oldWidth = oBox.offsetWidth;
	var oldHeight = oBox.offsetHeight;

	oBox.style.width = oBox.offsetWidth * 0.75 + "px";
	oBox.style.height = oBox.offsetHeight * 0.75 + "px"; 

	oBox.style.left = oBox.offsetLeft - (oBox.offsetWidth - oldWidth) / 2 + "px";
	oBox.style.top = oBox.offsetTop - (oBox.offsetHeight - oldHeight) / 2 + "px";

	break; 
	}
	bBottom = true;
	break;
	case 49:
	bCtrlKey && (oBox.style.background = "green");
	break;
	case 50:
	bCtrlKey && (oBox.style.background = "yellow");
	break;
	case 51:
	bCtrlKey && (oBox.style.background = "blue");
	break;
	}

	return false
	};

	document.onkeyup = function (event)
	{
	switch ((event || window.event).keyCode)
	{
	case 37:
	bLeft = false;
	break;
	case 38:
	bTop = false;
	break;
	case 39:
	bRight = false;
	break;
	case 40:
	bBottom = false;
	break;
	}
	};

	//防止溢出
function limit()
	{
	var doc = [document.documentElement.clientWidth, document.documentElement.clientHeight]
	//防止左側溢出
oBox.offsetLeft <=0 && (oBox.style.left = 0);
	//防止頂部溢出
oBox.offsetTop <=0 && (oBox.style.top = 0);
	//防止右側溢出
doc[0] - oBox.offsetLeft - oBox.offsetWidth <= 0 && (oBox.style.left = doc[0] - oBox.offsetWidth + "px");
	//防止底部溢出
doc[1] - oBox.offsetTop - oBox.offsetHeight <= 0 && (oBox.style.top = doc[1] - oBox.offsetHeight + "px")
	}
};
</script>


上:↑ 下:↓ 左:← 右:→
Ctrl + 1 : 背景變為綠色
Ctrl + 2 : 背景變為黃色
Ctrl + 3 : 背景變為藍色
Ctrl + ↑ : 放大
Ctrl + ↓ : 縮小

  

//被移動的方塊【DIV】
<div id="box"></div>

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 自動載入(phalcon\Loader)轉載請註明來源一、php文件引入 通過 include() 或 require() 函數,可以在PHP程式執行之前在該文件中插入一個文件的內容。區別:處理錯誤的方式不同。include() 函數會生成一個警告(但是腳本會繼續執行),而 require() 函....
  • 最近出於好奇心,研究了一下tomcat集群配置,並整合nginx,實現負載均衡,session共用,寫篇記錄,防止遺忘。---------菜雞的自我修煉。說明:博主採用一個web項目同時部署到兩台tomcat下,(tomcat-A,tomca-B),使用nginx做反向代理,按照設置的權值,將請求分...
  • 項目地址:<https://github.com/web3d/DingtalkSDK.git 釘釘官方有些簡單的demo,但封裝得有些粗糙。開發的過程中,做了一個有點小意思的工具:json數據轉換為PHP 實體類。其實代碼沒幾行,但將能想到的做出來,對程式員本身好像是很難的一件事情,因為程式員已經習...
  • 一:軟體開發過程中各種不同的活動定義問題 需求分析 規劃構建 軟體架構 詳細設計 編碼與測試 單元測試 集成測試 集成 系統測試 保障維護二:軟體構建的重要性1:構建活動是軟體開發 的主要組成部分。2:構建活動是軟體開發的核心活動。3:可以提高生產率。4:構建活動的產物-源代碼-往往是對軟體的唯一的...
  • Dubbo 服務消費者 Web 應用 war 包的部署
  • 一、for迴圈的優化 1 2 3 4 5 Document 6 28 29 30 31 View Code
  • 我們經常可以在網頁上看到形式各異的jQuery相冊插件,由於現在瀏覽器對HTML5和CSS3的相容越來越好了,所以很多jQuery相冊插件都運用了CSS3的相關特性,形成了許多炫酷的動畫特效。本文收集了10個比較經典炫酷的jQuery相冊動畫,希望大家喜歡。1、HTML5/CSS3圖片左右切換彈性動...
  • 有時文本文字已經超過所在的區域,但是文字還是不自動換行可以用強制換行強制不換行div{ white-space:nowrap;}自動換行div{ word-wrap:break-word; word-break:normal;}強制英文單詞斷行div{ word-break:break-all;}這...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...