亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

js實現完全自定義可帶多級目錄的網頁鼠標右鍵菜單方法

2019-11-20 13:04:36
字體:
來源:轉載
供稿:網友

本文實例講述了js實現完全自定義可帶多級目錄的網頁鼠標右鍵菜單方法。分享給大家供大家參考。具體分析如下:

這是很不錯的一個網頁鼠標特性,這個代碼可以控制網頁中鼠標的右鍵菜單,完全按照你的意思打造,可以帶多級的目錄顯示。

復制代碼 代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS自定義網頁多級導航菜單</title>
<style type="text/css">
html,body{height:100%;overflow:hidden;}
body,div,ul,li{margin:0;padding:0;}
body{font:12px/1.5 /5fae/8f6f/96c5/9ed1;}
ul{list-style-type:none;}
#rightMenu{position:absolute;top:-9999px;left:-9999px;}
#rightMenu ul{float:left;border:1px solid #979797;background:#f1f1f1 url(images/line.png) 24px 0 repeat-y;padding:2px;box-shadow:2px 2px 2px rgba(0,0,0,.6);}
#rightMenu ul li{float:left;clear:both;height:24px;cursor:pointer;line-height:24px;white-space:nowrap;padding:0 30px;}
#rightMenu ul li.sub{background-repeat:no-repeat;background-position:right 9px;background-image:url(images/arrow.png);}
#rightMenu ul li.active{background-color:#f1f3f6;border-radius:3px;border:1px solid #aecff7;height:22px;line-height:22px;background-position:right -8px;padding:0 29px;}
#rightMenu ul ul{display:none;position:absolute;}
</style>
<script type="text/javascript">
var getOffset = {
top: function (obj) {
return obj.offsetTop + (obj.offsetParent ? arguments.callee(obj.offsetParent) : 0)
},
left: function (obj) {
return obj.offsetLeft + (obj.offsetParent ? arguments.callee(obj.offsetParent) : 0)
}
};
window.onload = function ()
{
var oMenu = document.getElementById("rightMenu");
var aUl = oMenu.getElementsByTagName("ul");
var aLi = oMenu.getElementsByTagName("li");
var showTimer = hideTimer = null;
var i = 0;
var maxWidth = maxHeight = 0;
var aDoc = [document.documentElement.offsetWidth, document.documentElement.offsetHeight];
oMenu.style.display = "none";
for (i = 0; i < aLi.length; i++)
{
//為含有子菜單的li加上箭頭
aLi[i].getElementsByTagName("ul")[0] && (aLi[i].className = "sub");
//鼠標移入
aLi[i].onmouseover = function ()
{
var oThis = this;
var oUl = oThis.getElementsByTagName("ul");
//鼠標移入樣式
oThis.className += " active";
//顯示子菜單
if (oUl[0])
{
clearTimeout(hideTimer);
showTimer = setTimeout(function ()
{
for (i = 0; i < oThis.parentNode.children.length; i++)
{
oThis.parentNode.children[i].getElementsByTagName("ul")[0] &&
(oThis.parentNode.children[i].getElementsByTagName("ul")[0].style.display = "none");
}
oUl[0].style.display = "block";
oUl[0].style.top = oThis.offsetTop + "px";
oUl[0].style.left = oThis.offsetWidth + "px";
setWidth(oUl[0]);
//最大顯示范圍
maxWidth = aDoc[0] - oUl[0].offsetWidth;
maxHeight = aDoc[1] - oUl[0].offsetHeight;
//防止溢出
maxWidth < getOffset.left(oUl[0]) && (oUl[0].style.left = -oUl[0].clientWidth + "px");
maxHeight < getOffset.top(oUl[0]) && (oUl[0].style.top = -oUl[0].clientHeight + oThis.offsetTop + oThis.clientHeight + "px")
},300);
}
};
//鼠標移出
aLi[i].onmouseout = function ()
{
var oThis = this;
var oUl = oThis.getElementsByTagName("ul");
//鼠標移出樣式
oThis.className = oThis.className.replace(//s?active/,"");
clearTimeout(showTimer);
hideTimer = setTimeout(function ()
{
for (i = 0; i < oThis.parentNode.children.length; i++)
{
oThis.parentNode.children[i].getElementsByTagName("ul")[0] &&
(oThis.parentNode.children[i].getElementsByTagName("ul")[0].style.display = "none");
}
},300);
};
}
//自定義右鍵菜單
document.oncontextmenu = function (event)
{
var event = event || window.event;
oMenu.style.display = "block";
oMenu.style.top = event.clientY + "px";
oMenu.style.left = event.clientX + "px";
setWidth(aUl[0]);
//最大顯示范圍
maxWidth = aDoc[0] - oMenu.offsetWidth;
maxHeight = aDoc[1] - oMenu.offsetHeight;
//防止菜單溢出
oMenu.offsetTop > maxHeight && (oMenu.style.top = maxHeight + "px");
oMenu.offsetLeft > maxWidth && (oMenu.style.left = maxWidth + "px");
return false;
};
//點擊隱藏菜單
document.onclick = function ()
{
oMenu.style.display = "none"
};
//取li中最大的寬度, 并賦給同級所有li
function setWidth(obj)
{
maxWidth = 0;
for (i = 0; i < obj.children.length; i++)
{
var oLi = obj.children[i];
var iWidth = oLi.clientWidth - parseInt(oLi.currentStyle ? oLi.currentStyle["paddingLeft"] : getComputedStyle(oLi,null)["paddingLeft"]) * 2
if (iWidth > maxWidth) maxWidth = iWidth;
}
for (i = 0; i < obj.children.length; i++) obj.children[i].style.width = maxWidth + "px";
}
};
</script>
</head>
<body>
<center>自定義右鍵菜單,請在頁面點擊右鍵查看效果。</center>
<div id="rightMenu">
<ul>
<li><strong>JavaScript 學習</strong></li>
<li>
武林網
<ul>
<li>網頁特效原理分析</li>
<li>響應用戶操作</li>
<li>提示框效果</li>
<li>事件驅動</li>
<li>元素屬性操作</li>
</ul>
</li>
<li>
www.49028c.com
<ul>
<li>改變網頁背景顏色</li>
<li>函數傳參</li>
<li>高重用性函數的編寫</li>
<li>126郵箱全選效果</li>
<li>循環及遍歷操作</li>
</ul>
</li>
<li>
第三課
<ul>
<li>
JavaScript組成
<ul>
<li>ECMAScript</li>
<li>DOM</li>
<li>BOM</li>
<li>JavaScript兼容性來源</li>
</ul>
</li>
<li>JavaScript出現的位置、優缺點</li>
<li>變量、類型、typeof、數據類型轉換、變量作用域</li>
<li>
閉包
<ul>
<li>什么是閉包</li>
<li>簡單應用</li>
<li>閉包缺點</li>
</ul>
</li>
<li>運算符</li>
<li>程序流程控制</li>
<li>
定時器的使用
<ul>
<li>setInterval</li>
<li>setTimeout</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>

希望本文所述對大家的javascript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧洲日韩成人av| 国产日韩欧美在线| 精品色蜜蜜精品视频在线观看| 精品国产老师黑色丝袜高跟鞋| 欧美一级黑人aaaaaaa做受| 一本色道久久88综合日韩精品| 欧美精品久久久久久久久| 日韩在线观看免费全| 国产欧美日韩综合精品| 日韩中文在线中文网在线观看| 成人高h视频在线| 姬川优奈aav一区二区| 日韩第一页在线| 成人黄色中文字幕| 欧美电影在线观看网站| 热久久美女精品天天吊色| 欧美日韩中国免费专区在线看| 国产激情视频一区| 国产精品自拍小视频| 国产精品扒开腿做爽爽爽视频| 欧美日韩在线视频一区二区| 欧美亚洲视频在线看网址| 九九热精品在线| 亚洲精品日韩欧美| 91久久久久久久久久久| 精品中文字幕久久久久久| xvideos亚洲人网站| 亚洲精品98久久久久久中文字幕| 亚洲国语精品自产拍在线观看| 成人欧美一区二区三区在线湿哒哒| 欧美日韩亚洲系列| 亚洲欧美激情另类校园| xxx欧美精品| 日韩中文字幕国产| 亚洲高清色综合| 日韩免费电影在线观看| 粗暴蹂躏中文一区二区三区| 欧美激情网站在线观看| 国产精品视频yy9099| 亚洲精选中文字幕| 日本国产高清不卡| 成人久久精品视频| 中文字幕视频在线免费欧美日韩综合在线看| 欧美黑人一区二区三区| 欧美成人中文字幕在线| 91久久精品一区| 欧美精品免费在线| 国产一区玩具在线观看| 国产成人91久久精品| 欧美日韩国产黄| 欧美成人激情视频| 日韩一级裸体免费视频| 高清欧美一区二区三区| 亚洲视频一区二区三区| 中文字幕九色91在线| www.亚洲成人| 亚洲黄色av网站| 欧美国产一区二区三区| 成人免费视频a| 国产精品成av人在线视午夜片| 91精品国产色综合久久不卡98| 亚洲精品黄网在线观看| 日韩一区在线视频| 一区二区三欧美| 欧美激情第一页xxx| 亚洲黄色免费三级| 超碰91人人草人人干| 日韩不卡中文字幕| 91夜夜未满十八勿入爽爽影院| 国产精品老牛影院在线观看| 中文字幕精品国产| 日韩美女福利视频| 亚洲成人教育av| 韩国欧美亚洲国产| 国产精品久久久久久久久久久久久久| 国产精品久久在线观看| 97在线视频精品| 久色乳综合思思在线视频| 亚洲天堂免费视频| 久久福利网址导航| 欧美怡红院视频一区二区三区| 亚洲国产免费av| 久99九色视频在线观看| 日韩天堂在线视频| 欧美人与性动交a欧美精品| 中国china体内裑精亚洲片| 日韩在线观看免费网站| 日本在线观看天堂男亚洲| 欧美激情乱人伦一区| 欧美成人免费小视频| 国产日韩中文字幕| 亚洲高清免费观看高清完整版| 日韩欧美一区二区三区| 成人www视频在线观看| 伊人伊人伊人久久| 日韩欧美aⅴ综合网站发布| 欧美丰满少妇xxxxx做受| 色综合天天狠天天透天天伊人| 日韩av在线免费| 欧美猛少妇色xxxxx| 日韩av手机在线观看| 亚洲精品福利免费在线观看| 国产精品久久久久久久美男| 欧美大片va欧美在线播放| 国内精品视频久久| 午夜精品视频网站| 欧美在线视频在线播放完整版免费观看| 中文字幕亚洲第一| 日本精品性网站在线观看| 精品久久香蕉国产线看观看gif| 国内偷自视频区视频综合| 亚洲精品国产精品国产自| 亚洲精品国产suv| 亚洲无av在线中文字幕| 欧美高清视频在线| 欧美性在线观看| 久久男人资源视频| 久久久久国产精品www| 国产精品1区2区在线观看| 7m第一福利500精品视频| 国产免费一区二区三区香蕉精| 大伊人狠狠躁夜夜躁av一区| 久久久亚洲影院| 欧美日韩黄色大片| 成人免费观看49www在线观看| 欧美人交a欧美精品| 精品国产91久久久久久老师| 亚洲一区中文字幕在线观看| 午夜精品久久久久久久久久久久久| 欧美电影第一页| 欧美日韩福利在线观看| 日韩av免费观影| 日韩精品视频三区| 久久激情视频免费观看| 欧美疯狂xxxx大交乱88av| 成人444kkkk在线观看| 亚洲第一精品夜夜躁人人躁| 91久久精品国产91性色| 日韩亚洲欧美成人| 精品中文字幕在线| 国产精品jvid在线观看蜜臀| 日韩欧美国产高清91| 国产午夜精品久久久| 亚洲va国产va天堂va久久| 亚洲人午夜色婷婷| 久久久欧美一区二区| 成人福利免费观看| 奇米四色中文综合久久| 国产精品免费看久久久香蕉| 国产精品第1页| 这里只有精品久久| 日韩中文视频免费在线观看| 欧美日韩国产一中文字不卡| 久久久久久九九九| 亚洲影院高清在线| 91亚洲va在线va天堂va国| 日韩电视剧在线观看免费网站| www.欧美视频| 午夜精品福利视频| 亚洲综合国产精品| 欧美日韩国产页| 欧美精品videosex极品1| 欧美亚洲在线观看| 久久久久久伊人|