当前位置: 代码迷 >> Web前端 >> 能施用键盘移动的层页面代码
  详细解决方案

能施用键盘移动的层页面代码

热度:47   发布时间:2012-10-25 10:58:57.0
能使用键盘移动的层页面代码
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
		<title>键盘控制层的移动</title>
		<script language="javascript">
  <!--
  //alert(txt.style.top);
  var up,down,left,right;
  up = 38;
  down = 40;
  left = 37;
  right = 39;
  function document.onkeydown()
  {
  // alert(event.keyCode);
  //左:37 上:38 右:39 下:40
  var int;
  int = parseInt(document.getElementById("Int").value);
  if(int == "NaN")
  int = 5;
  var str = "",press,evet;
  var div = document.getElementById("Div");
  var txt = document.getElementById("Txt");
  if(event.srcElement.tagName == "INPUT")
  {
  if(event.srcElement == document.getElementById("Int"))
  {
  if(event.keyCode == 13)
  document.body.focus();
  if((event.keyCode < 96 || event.keyCode > 105) && event.keyCode != 8 && event.keyCode != 46 && !(event.keyCode >= 37 && event.keyCode <= 40) )
  event.returnValue = false;
  return;
  }
  else
  {
  switch(event.keyCode)
  {
  case 37:{
  event.srcElement.value = "←";
  break;
  }
  case 38:{
  event.srcElement.value = "↑";
  break;
  }
  case 39:{
  event.srcElement.value = "→";
  break;
  }
  case 40:{
  event.srcElement.value = "↓";
  break;
  }
  }
  switch(event.srcElement)
  {
  case document.getElementById("Up"):{
  up = event.keyCode;
  break;
  }
  case document.getElementById("Down"):{
  down = event.keyCode;
  break;
  }
  case document.getElementById("Left"):{
  left = event.keyCode;
  break;
  }
  case document.getElementById("Right"):{
  right = event.keyCode;
  break;
  }
  }
  }
  }
  else
  {
  switch(event.keyCode)
  {
  case left:{
  press = "<font> ← </font>";
  evet = "<font>向 <b>左</b> 移动</font>" + " " + int + " px 。";
  div.style.left = (parseInt(div.currentStyle.left) - int) + "px";
  if(parseInt(div.style.left) <= 0)
  {
  evet = "已经到了 <font>最左边</font> ,无法再 <font>向左</font> 移动。";
  div.style.left = "0px";
  break ;
  }
  break;
  }
   case up:{
  press = "<font> ↑ </font>";
  evet = "<font>向 <b>上</b> 移动</font>" + " " + int + " px 。";
  div.style.top = (parseInt(div.currentStyle.top) - int) + "px";
  if(parseInt(div.style.top) <= 0)
  {
  evet = "已经到了 <font>最上边</font> ,无法再 <font>向上</font> 移动。";
  div.style.top = "0px";
  break ;
  }
  break;
  }
  case right:{
  press = "<font> → </font>";
  evet = "<font>向 <b>右</b> 移动</font>" + " " + int + " px 。";
  div.style.left = (parseInt(div.currentStyle.left) + int) + "px";
  if(parseInt(div.style.left) >= (parseInt(document.body.clientWidth) - parseInt(div.offsetWidth)))
  {
  div.style.left = parseInt(document.body.clientWidth) - parseInt(div.offsetWidth);
  evet = "已经到了 <font>最右边</font> ,无法再 <font>向右</font> 移动。";
  break ;
  }
  break;
  }
  case down:{
  press = "<font> ↓ </font>";
  evet = "<font>向 <b>下</b> 移动</font>" + " " + int + " px 。";
  div.style.top = (parseInt(div.currentStyle.top) + int) + "px";
  if(parseInt(div.style.top) >= (parseInt(document.body.clientHeight) - parseInt(div.offsetHeight)))
  {
  div.style.top = parseInt(document.body.clientHeight) - parseInt(div.offsetHeight);
  evet = "已经到了 <font>最下边</font> ,无法再 <font>向下</font> 移动。";
  break ;
  }
  break;
  }
  default:
  {
  return;
  }
  }
  str = "您按下了" + press + "键,";
  str += "该图层" + evet
  txt.innerHTML = str;
  }
  }
  //-->
  </script>
		<style type="text/css">
  <!--
  #Div {
	  position: absolute;
	  width: 238px;
	  height: 135px;
	  left: expression((   body .   clientWidth -     this .   offsetWidth)/
		2 );
	  top: expression((   body .   clientHeight -     this .   offsetHeight)/
		2 );
	  z-index: 1;
	  text-align: center;
	  background: #AFDBFF;
	  border: #006699 1px solid;
}

  #Txt {
	  font-size: 9pt;
	  position: absolute;
	  width: 200px;
	  top: expression((   Div .   offsetHeight -     this .   offsetHeight)/
		2 );
	  left: expression((   Div .   offsetWidth -     this .   offsetWidth)/
		2 );
}

  #Txt p {
	  font-size: 9pt;
	  margin: 8px;
}

  #Txt font {
	  color: #FF0000;
	  font-size: 9pt;
}

  #Layer1 {
	  border: #006699 1px solid;
	  padding: 10px;
	  font-size: 9pt;
	  color: #336699;
	  position: absolute;
	  top: expression((   body .   clientHeight -     this .   offsetHeight)/
		2 );
	  left: expression((   body .   clientWidth -     this .   offsetWidth)/
		2 +   
		 Div .   offsetWidth );
}

  #Layer1 Input {
	  font-size: 9pt;
	  color: #336699;
}

  #Int {
	  text-align: right;
}
  --
>
</style>
	</head>
	<body>
		<div id="Div">
			<span id="Txt">请分别按下 <font>↑</font>、<font>↓</font>、<font>←</font>、<font>→</font>,
				试试看有什么效果? </span>
		</div>
		<span id="Layer1">控制键设置: 向上移动: <input name="Up" type="text"
				value="↑" size="6"> 向下移动: <input name="Down" type="text"
				value="↓" size="6"> 向左移动: <input name="Left" type="text"
				value="←" size="6"> 向右移动: <input name="Right" type="text"
				value="→" size="6"> 每次移动 <input name="Int" type="text"
				id="Int" value="5" size="4" maxlength="3"> px;</span>
	</body>
</html>

?

  相关解决方案