JS封装导航菜单

[color=blue][/color][size=xx-small][/size][align=left][/align]
页面代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>MenuBar</title>
<link rel="stylesheet" type="text/css" href="menu.css">
<link rel="stylesheet" type="text/css" href="all.css">
<script type="text/javascript" src="menu.js"></script>
<script>
function loadNavMenu(){
var tdmenubar = new TdMenuBar({renderTo:"navDiv",menus:[{text:'文件',menus:[{text:'新建'},{text:'打开'}]}]});
}
</script>
</head>
<body οnlοad="loadNavMenu()">
<div id="navDiv" style="border: 2px inset;"></div>
</body>
</html>

JavaScript代码:
/*
* 自定义导航菜单
* 2009-4-18
*/
function TdMenuBar(config){
this.initial(config);
this.container;
this.rootUL;
}

/*
* 初始化
*/
TdMenuBar.prototype.initial = function(config){
for(var p in config){
this[p] = config[p];
}
this.container = document.getElementById(this.renderTo);
this.render();
}

/*
*
*/
TdMenuBar.prototype.render = function(){
this.container.innerHTML = "<ul class='menu'></ul>";
this.rootUL = this.container.getElementsByTagName("ul")[0];
if(this.menus && this.menus.length > 0){
var html = "";
for(var i=0; i<this.menus.length; i++ ){
html+="<li>";
html += "<a href='#'>"+this.menus[i].text+"</a>";
html += this.renderSub(this.menus[i]);
html += "</li>";
}
this.rootUL.innerHTML = html;

var menuItemLi = this.rootUL.getElementsByTagName("li");
/* 绑定事件 */
for (var i=0; i<menuItemLi.length; i++) {
menuItemLi[i].οnmοuseοver=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
menuItemLi[i].οnmοusedοwn=function() {
alert(event.srcElement.tagName);

}
menuItemLi[i].οnmοuseup=function() {

}
menuItemLi[i].οnmοuseοut=function() {
this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"), "");
}
}
}
}

/*
*
*/
TdMenuBar.prototype.renderSub = function(menuItem){
var html = "";
if(menuItem.menus && menuItem.menus.length > 0) {
html += "<ul>";
for(var i =0 ; i < menuItem.menus.length; i++) {
html += "<li>";
html += "<a href='#'>"+menuItem.menus[i].text+"</a>";
html += "</li>";
}
html += "</ul>";
}
return html;
}
CSS样式定义:
ul.menu {
line-height: 20px;
list-style-type: none;
font-size:12px;
}
ul.menu a {
display: block;
width: 80px;
text-align:center;
}
ul.menu a:link {
text-decoration:none;
}
ul.menu a:visited {
text-decoration:none;
}
ul.menu a:hover {
text-decoration:none;
font-weight:bold;
}


ul.menu li {
float: left;
width: 80px;
}
ul.menu li a:hover{
background:#999;
}

ul.menu li ul {
line-height: 22px;
list-style-type: none;
text-align:left;
left: -999px;
width: 200px;
position: absolute;
}
ul.menu li:hover ul {
left: auto;
}
ul.menu li.sfhover ul {
left: auto;
}

ul.menu li ul li{
float: left;
}

ul.menu li ul a{
display: block;
width: 150px;
text-align:left;
padding-left:24px;
background:#999;
}
ul.menu li ul a:link {
color:#666;
text-decoration:none;
}
ul.menu li ul a:visited {
color:#666;
text-decoration:none;
}
ul.menu li ul a:hover {
color:#F3F3F3;
text-decoration:none;
font-weight:normal;
background:#C00;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值