| 編程(Programming)是編定程序的中文簡稱,就是讓計算機(jī)代碼解決某個問題,對某個計算體系規(guī)定一定的運(yùn)算方式,使計算體系按照該計算方式運(yùn)行,并最終得到相應(yīng)結(jié)果的過程。為了使計算機(jī)能夠理解(understand)人的意圖,人類就必須將需解決的問題的思路、方法和手段通過計算機(jī)能夠理解的形式告訴計算機(jī),使得計算機(jī)能夠根據(jù)人的指令一步一步去工作,完成某種特定的任務(wù)。這種人和計算體系之間交流的過程就是編程。 【實(shí)例名稱】 JS代碼實(shí)現(xiàn)類似QQ主界面的菜單 【實(shí)例描述】 QQ主界面其實(shí)是C/S實(shí)現(xiàn)的菜單。本例通過JavaScript實(shí)現(xiàn)一個彈出式的菜單.效果與QQ主界面類似。 【實(shí)例代碼】 <html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb2312">
<script language="JavaScript">
var titleHeight = 22; //標(biāo)題的高度
var bodyHeight = 160; //菜單內(nèi)容項(xiàng)的高度
var groupcount = 4; //組的個數(shù)
var step = 3; //移動速度
//顯示菜單的內(nèi)容
function showDiv(obj1, obj2)
{
//以下循環(huán)為改變標(biāo)題的背景顏色
for(i=0;i<document.all.tags("td").length;i++)
{
if (document.all.tags("td")[i].className == 'headtd')
document.all.tags("td")[i].bgColor = '#cccc66';
}
obj2.bgColor = '#cccc66';
moveme(obj1);
}
//移動菜單內(nèi)容
function moveme(obj)
{
idnumber = parseInt(obj.id.substr(4));
objtop = titleHeight * (idnumber - 1);
objbuttom = bodyHeight + titleHeight * (idnumber - 2);
currenttop = parseInt(obj.style.top);
if (currenttop >= objbuttom)
{
//檢驗(yàn)出每一個應(yīng)該向上移動的層
countid = 1;
for(i=0;i<document.all.tags("div").length;i++)
{
if (document.all.tags("div")[i].id == 'item'+countid+'body')
{
obj = document.all.tags("div")[i];
objtop = titleHeight * (countid - 1);
moveup(obj,objtop);
if (countid == idnumber)
break;
countid++;
}
}
}
else if ((currenttop <= objtop) && (idnumber < groupcount))
{
//檢驗(yàn)出每一個應(yīng)該向下移動的層
idnumber++;
countid = groupcount;
for(i=document.all.tags("div").length-1;i>=0;i--)
{
if (document.all.tags("div")[i].id == 'item'+countid+'body')
{
obj = document.all.tags("div")[i];
objbuttom = bodyHeight + titleHeight * (countid - 2);
movedown(obj,objbuttom);
if (countid == idnumber)
break;
countid--;
}
}
}
}
//向上移動的方法
function moveup(obj,objtop)
{
currenttop = parseInt(obj.style.top);
if (currenttop > objtop)
{
obj.style.top = currenttop - step;
window.setTimeout('moveup('+obj.id+','+objtop+')',1)
}
}
//向下移動的方法
function movedown(obj,objbuttom)
{
currenttop = parseInt(obj.style.top);
if (currenttop < objbuttom)
{
obj.style.top = currenttop + step;
window.setTimeout('movedown('+obj.id+','+objbuttom+')',1)
}
}
</script>
<style type="text/css">
<!--showme
.headtd { border: 3px outset; border-color: #00bbFF #0007cc
#0007cc #00aacc; cursor: hand; font-size: 10pt}
.bodytd { background: gray; border: 2px outset; border-color:
#00aaFF #0007cc #0007cc #00aacc; font-size: 10pt}
-->
</style>
</head> <body bgcolor="#FFFFFF" text="#000000">
<div id="mainboard" style="position:absolute;
left:2px; top:2px; width:120px; height:226px; z-index:3;
overflow: hidden; background-color: #cccc66;">
<div id="item1body" style="position:absolute;
left:0; top:0; width:120px; height:160px; z-index:1;
overflow: hidden">
<table width="100%" border="0" height="100%"
cellpadding="2" cellspacing="0">
<tr>
<td id="item1head" height="20" class="headtd"
onclick="showDiv(item1body,this)" bgcolor="#cccc66">
<div align="center">第一級</div>
</td>
</tr>
<tr>
<td class="bodytd">
<div align="center">123</div>
</td>
</tr>
</table>
</div>
<div id="item2body" style="position:absolute;
left:0px; top:160; width:120; height:160; z-index:2;
overflow: hidden">
<table width="100%" border="0" height="100%"
cellpadding="2" cellspacing="0">
<tr>
<td id="item2head" height="20" class="headtd"
onclick="showDiv(item2body,this)" bgcolor="#cccc66">
<div align="center">第二級</div>
</td>
</tr>
<tr>
<td class="bodytd">
<div align="center">456</div>
</td>
</tr>
</table>
<p class="headtd"> </p>
</div>
<div id="item3body" style="position:absolute;
left:0; top:182; width:120px; height:160; z-index:3">
<table width="100%" border="0" height="100%"
cellpadding="2" cellspacing="0">
<tr>
<td id="item3head" height="20" class="headtd"
onclick="showDiv(item3body,this)" bgcolor="#cccc66">
<div align="center">第三級</div>
</td>
</tr>
<tr>
<td class="bodytd">
<div align="center">789</div>
</td>
</tr>
</table>
</div>
<div id="item4body" style="position:absolute;
left:0; top:204; width:120px; height:160; z-index:4;
overflow: hidden">
<table width="100%" border="0" height="100%"
cellpadding="2" cellspacing="0">
<tr>
<td id="item4head" height="20" class="headtd"
onclick="showDiv(item4body,this)" bgcolor="#cccc66">
<div align="center">第四級</div>
</td>
</tr>
<tr>
<td class="bodytd">
<div align="center">000</div>
</td>
</tr>
</table>
</div>
</div>
</body>
</html>
【運(yùn)行效果】
 【難點(diǎn)剖析】 本例的重點(diǎn)是菜單的布局。使用div作為菜單的標(biāo)題,使用table作為菜單的內(nèi)容,通過設(shè)置樣式實(shí)現(xiàn)菜單的下拉和收縮效果。 【源碼下載】 為了JS代碼的準(zhǔn)確性,請點(diǎn)擊:類似QQ主界面的菜單 進(jìn)行本實(shí)例源碼下載
使用編程語言寫的程序,由于每條指令都對應(yīng)計算機(jī)一個特定的基本動作,所以程序占用內(nèi)存少、執(zhí)行效率高。 |