這不是我做的,是YQ君做的,在這裏http://yqjun.tk/javascript/javascript-left-key-menu/ 我只是收集過來而已
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>自定義右鍵菜單</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
/*global*/
html, body, div, ul, li, a {
margin: 0;
padding: 0;
}
html, body {
height: 100%;
overflow: hidden;
font: 13px/1.5 "Microsoft YaHei";
}
ul {
list-style: none;
}
a {
outline: ;
}
/*菜單君*/
#left_key_main_menu {
display: none;
position: absolute;
width: 100px;
}
#left_key_menu_outer li a{
display: block;
height: 30px;
font-size: 12px;
color: #444;
line-height: 30px;
text-align: center;
text-decoration: none;
}
.left_key_menu_btn_current {
color: #FFFFFF;
background: #348CCC;
}
.left_key_main_manu_btn_to_secondary_menu a{
border-left: 3px solid #348CCC;
}
/*二級什麼的*/
#left_key_secondary_menu_id {
display: none;
}
.left_key_secondary_menu {
display: none;
position: absolute;
width: 120px;
}
/*我不是陰影*/
.shadow_out, .shadow_mid, .shadow_in {
padding: 1px;
border:1px solid #FFF;
}
.shadow_in {
padding: 3px;
background: #FFF;
border-color: #BBBBBB;
}
.shadow_mid {
background: #D8D8D8;
border-color: #E8E8E8;
}
.shadow_out {
background: #F3F3F3;
border-color: #FBFBFB;
}
</style>
<script type="text/javascript">
window.onload = function()
{
fuLeftKeyMenu();
};
var fuLeftKeyMenu = function()
{
var oLeftKeyMainMenu = document.getElementById("left_key_main_menu");
var aLeftKeyMainMenuBtn = oLeftKeyMainMenu.getElementsByTagName("a");
var aLeftKeyMainMenuBtnToSecondaryMenu = new Array();
var aLeftKeyMainMenuBtnToSecondaryMenu = myGetElementsByClassName("left_key_main_manu_btn_to_secondary_menu", "left_key_main_menu", "li");
//初始化 SecondaryMenu 數組
var aLeftKeySecondaryMenu = new Array();
var aLeftKeySecondaryMenu = myGetElementsByClassName("left_key_secondary_menu", "left_key_secondary_menu_box", "div");
var totalLeftKeyMenuBtn = document.getElementsByTagName("a");
var iMainMenuNewLeft = iMainMenuNewTop = 0;
var bSecondaryMenuIsOvered = new Array();
var aSecondaryMenuTop = new Array();//記錄 aLeftKeyMainMenuBtn 高度
var aSecondaryMenuTop = getSecondaryMenuTop(aLeftKeyMainMenuBtn);
//鼠標右鍵顯示 oLeftKeyMainMenu ,點擊其他鍵則隱藏
document.onmousedown = function(event)
{
var event = event || window.event; //前者用於非IE,後者爲IE而寫
stopDefaultLeftKey(event);
if (event.button != 2)
{
hideLeftKeyMainMenu();
}
else
{
showLeftKeyMainMenu(event);
}
};
//totalLeftKeyMenuBtn樣式
for (var i = 0; i < totalLeftKeyMenuBtn.length; i++)
{
//鼠標點擊or覆蓋 totalLeftKeyMenuBtn ,改變 totalLeftKeyMenuBtn 樣式
totalLeftKeyMenuBtn[i].onmousedown = totalLeftKeyMenuBtn[i].onmouseover = function()
{
for(var elem in totalLeftKeyMenuBtn)
{
totalLeftKeyMenuBtn[elem].className = "";
}
this.className = "left_key_menu_btn_current";
};
//鼠標離開 totalLeftKeyMenuBtn ,恢復 totalLeftKeyMenuBtn 樣式
totalLeftKeyMenuBtn[i].onmouseout = function()
{
this.className = "";
};
}
//鼠標覆蓋 aLeftKeyMainMenuBtnToSecondaryMenu[i] or aLeftKeySecondaryMenu[i] ,顯示 aLeftKeySecondaryMenu[i]
for (var i = 0; i < aLeftKeyMainMenuBtnToSecondaryMenu.length; i++)
{
aLeftKeyMainMenuBtnToSecondaryMenu[i].index = aLeftKeySecondaryMenu[i].index = i;
aLeftKeyMainMenuBtnToSecondaryMenu[i].onmouseover = aLeftKeyMainMenuBtnToSecondaryMenu[i].onmousedown = aLeftKeySecondaryMenu[i].onmouseover = function(event)
{
var event = event || window.event;
showLeftKeySecondaryMenu(this.index);
};
}
//鼠標離開 aLeftKeySecondaryMenu[i] or aLeftKeyMainMenuBtnToSecondaryMenu[i] or 點擊aLeftKeySecondaryMenu[i] ,隱藏 aLeftKeySecondaryMenu[i]
for (var i = 0; i < aLeftKeyMainMenuBtnToSecondaryMenu.length; i++)
{
aLeftKeyMainMenuBtnToSecondaryMenu[i].index = aLeftKeySecondaryMenu[i].index = i;
aLeftKeySecondaryMenu[i].onmouseout = aLeftKeySecondaryMenu[i].onmousedown = aLeftKeyMainMenuBtnToSecondaryMenu[i].onmouseout = function()
{
hideLeftKeySecondaryMenu(this.index);
};
}
//禁止 defalutLeftMenu 函數
var stopDefaultLeftKey = function(event)
{
if (event.button == 2)
{
document.oncontextmenu = function()
{
return false;
}
}
};
//顯示 oLeftKeyMainMenu 函數
var showLeftKeyMainMenu = function(event)
{
oLeftKeyMainMenu.style.display = "block";
iMainMenuNewTop = (event.clientY + oLeftKeyMainMenu.offsetHeight >= document.body.clientHeight) ? (event.clientY - oLeftKeyMainMenu.offsetHeight) : (event.clientY);
iMainMenuNewLeft = (event.clientX + oLeftKeyMainMenu.offsetWidth >= document.body.clientWidth) ? (event.clientX - oLeftKeyMainMenu.offsetWidth) : (event.clientX);
oLeftKeyMainMenu.style.left = iMainMenuNewLeft + "px";
oLeftKeyMainMenu.style.top = iMainMenuNewTop + "px";
};
//隱藏 oLeftKeyMainMenu 函數
var hideLeftKeyMainMenu = function()
{
oLeftKeyMainMenu.style.display = "none";
};
//顯示 aLeftKeySecondaryMenu[index] 函數
var showLeftKeySecondaryMenu = function(index)
{
aLeftKeySecondaryMenu[index].style.display = "block";
aLeftKeySecondaryMenu[index].style.left = (iMainMenuNewLeft + oLeftKeyMainMenu.offsetWidth + aLeftKeySecondaryMenu[index].offsetWidth >= document.body.clientWidth) ? (iMainMenuNewLeft - aLeftKeySecondaryMenu[index].offsetWidth + "px") : (iMainMenuNewLeft + oLeftKeyMainMenu.offsetWidth + "px");
aLeftKeySecondaryMenu[index].style.top = iMainMenuNewTop + aSecondaryMenuTop[index] * aLeftKeyMainMenuBtn[0].offsetHeight +"px";
bSecondaryMenuIsOvered[index] = true;
aLeftKeyMainMenuBtnToSecondaryMenu[index].getElementsByTagName("a")[0].className = "left_key_menu_btn_current";
};
// 隱藏 aLeftKeySecondaryMenu[index] 函數
var hideLeftKeySecondaryMenu = function(index)
{
var sleep = function()
{
if (bSecondaryMenuIsOvered[index] == false)
{
aLeftKeySecondaryMenu[index].style.display = "none";
}
}
setTimeout(sleep, 200);
bSecondaryMenuIsOvered[index] = false;
aLeftKeyMainMenuBtnToSecondaryMenu[index].getElementsByTagName("a")[0].className = "";
}
};
var myGetElementsByClassName = function(className, id, node)
{
var aResult = new Array();
var oBoxId = document.getElementById(id);//範圍
var aNode = oBoxId.getElementsByTagName(node);//範圍內標籤
for (var i = 0; i < aNode.length; i++)
{
if (aNode[i].className == className )
{
aResult[aResult.length] = aNode[i];
}
}
return aResult;
}
var getSecondaryMenuTop = function ()
{
var aResult = new Array();
var aBtnLi = document.getElementById("left_key_menu_outer").getElementsByTagName("li");
for (var i = 0; i < aBtnLi.length; i++)
{
if(aBtnLi[i].className.indexOf("left_key_main_manu_btn_to_secondary_menu") != -1)
{
aResult[aResult.length] = i;
}
}
return aResult;
}
</script>
</script>
</head>
<body>
<div id="left_key_menu_outer">
<div id="left_key_main_menu" class="shadow_out">
<div class="shadow_mid">
<div class="shadow_in">
<ul>
<li><a href="javascript:;">菜單什麼的</a></li>
<li><a href="javascript:;">菜單什麼的</a></li>
<li class="left_key_main_manu_btn_to_secondary_menu"><a href="javascript:;">二級什麼的</a></li>
<li><a href="javascript:;">菜單什麼的</a></li>
<li><a href="javascript:;">菜單什麼的</a></li>
<li class="left_key_main_manu_btn_to_secondary_menu"><a href="javascript:;">二級二號XD</a></li>
</ul>
</div>
</div>
</div>
<div id="left_key_secondary_menu_box">
<div class="left_key_secondary_menu" class="shadow_out">
<div class="shadow_mid">
<div class="shadow_in">
<ul>
<li><a href="javascript:;">人家纔不是二級</a></li>
<li><a href="javascript:;">人家纔不是二級</a></li>
<li><a href="javascript:;">人家纔不是二級</a></li>
</ul>
</div>
</div>
</div>
<div class="left_key_secondary_menu" class="shadow_out">
<div class="shadow_mid">
<div class="shadow_in">
<ul>
<li><a href="javascript:;">又一個二級賣萌</a></li>
<li><a href="javascript:;">又一個二級賣萌</a></li>
<li><a href="javascript:;">又一個二級賣萌</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</body>
</html>