Open IronBlood opened 10 years ago
完成了场景1和2,暂时放弃场景3.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8"/>
<title>Menu</title>
<script language="javascript">
var menu_select = 1;
var menu_max = 20;
var menu_height = 20;
var $=function(id){
return document.getElementById(id);
}
Function.prototype.bind = function(){
var __method = this;
var arg = arguments;
return function(){
__method.apply(window, arg);
}
}
function drawMenus(){
for(var i = 1;i<=menu_max;++i){
if(i == menu_select){
$("m"+i).style.backgroundColor="#eeeeee";
}else{
$("m"+i).style.backgroundColor="#aaaaaa";
}
}
}
function doKeydown(e){
var h = document.body.clientHeight;
var e = e||event;
var currKey=e.keyCode||e.which||e.charCode;
if(currKey == 38 || currKey == 75){
if(menu_select > 1){
menu_select = menu_select - 1;
}
}else if(currKey == 40 || currKey == 74){
if(menu_select < menu_max){
menu_select = menu_select + 1;
}
}
drawMenus();
}
function initEvent(){
for(var i = 1; i <= menu_max; ++i){
$("m"+i).onmouseover = doMouseOverMenu.bind(i);
}
drawMenus();
}
function doMouseOverMenu(index){
//alert(div);
menu_select = index;
drawMenus();
}
window.onload=initEvent;
document.onkeydown = doKeydown;
window.onscroll = function(){
var h = document.body.clientHeight;
while($("m"+menu_select).getBoundingClientRect().top < 0){
menu_select++;
}
while($("m"+menu_select).getBoundingClientRect().top + menu_height >= h){
menu_select--;
}
drawMenus();
}
</script>
<style type="text/css">
.menu{
width:100px;
height:20px;
border:solid 1px black;
/*background-color:#aaaaaa;*/
}
</style>
</head>
<body scoll=no>
<div id="m1" class="menu">m1;</div>
<div id="m2" class="menu">m2;</div>
<div id="m3" class="menu">m3;</div>
<div id="m4" class="menu">m4;</div>
<div id="m5" class="menu">m5;</div>
<div id="m6" class="menu">m6;</div>
<div id="m7" class="menu">m7;</div>
<div id="m8" class="menu">m8;</div>
<div id="m9" class="menu">m9;</div>
<div id="m10" class="menu">m10;</div>
<div id="m11" class="menu">m11;</div>
<div id="m12" class="menu">m12;</div>
<div id="m13" class="menu">m13;</div>
<div id="m14" class="menu">m14;</div>
<div id="m15" class="menu">m15;</div>
<div id="m16" class="menu">m16;</div>
<div id="m17" class="menu">m17;</div>
<div id="m18" class="menu">m18;</div>
<div id="m19" class="menu">m19;</div>
<div id="m20" class="menu">m20;</div>
</body>
</html>
以下来自 @Liu-Ameng 同学的代码:
目测基本的上下移动是可以执行的。增加一些场景: