横向导航条二级菜单,记录Cookie。

IE6png图片和样式有点问题,其他游览器显示正常。

二级菜单主要是写CSS代码和结合JS显示当前鼠标移到上面的一级菜单对应的二级菜单。

HTML代码:

<body>
<div class="top">
<div id=menu_out>
<div id=menu_in>
<div id=menu>
<ul id=nav>
<li name="navli"><a href="1.html" name="nava"><span><b>企业首页</b></span></a><ul><li><a href="index.aspx"><span>公司首页</span></a></li></ul></li>
<li name="navli"><a href="2.html" name="nava"><span><b>企业简介</b></span></a><ul><li><a href="content/about.aspx"><span>企业简介</span></a></li></ul></li>
<li name="navli"><a href="2.html" name="nava"><span><b>产品展示</b></span></a><ul><li><a href="picture/13.aspx"><span>瑞法斯2012春夏新品</span></a></li><li><a href="#"><span>瑞法斯2011秋冬新品</span></a></li></ul></li>
<li name="navli"><a href="2.html" name="nava"><span><b>企业资讯</b></span></a><ul><li><a href="article/6.aspx"><span>企业公告</span></a></li><li><a href="article/7.aspx"><span>内部新闻</span></a></li><li><a href="article/2.aspx"><span>业内新闻</span></a></li></ul></li>
<li name="navli"><a href="2.html" name="nava"><span><b>行业资讯</b></span></a><ul><li><a href="download.aspx"><span>行业咨询</span></a></li><li class=menu_line2></li></ul></li>
<li name="navli"><a href="2.html" name="nava"><span><b>在线留言</b></span></a><ul><li><a href="feedback.aspx"><span>在线留言</span></a></li><li class=menu_line2></li></ul></li>
<li name="navli"><a href="2.html" name="nava"><span><b>联系我们</b></span></a><ul><li><a href="content/contact.aspx"><span>联系我们</span></a></li><li class=menu_line2></li></ul></li>
</ul>
</div></div></div><div id="logo"></div></div>
</body>

JS代码:利用Cookie在不同的页面获取当前一级菜单。

 //firefox不支持getElementsByName,要遍历属性。
    var getElementsByName = function (tag, name) {
        var returns = document.getElementsByName(name);
        if (returns.length > 0) return returns;
        returns = new Array();
        var e = document.getElementsByTagName(tag);
        for (var i = 0; i < e.length; i++) {
            if (e[i].getAttribute("name") == name) {
                returns[returns.length] = e[i];
            }
        }
        return returns;
    }
    var temp;
    var obj_a = getElementsByName("li", "navli"); //获取一级菜单对象的数组
    var obj_b = getElementsByName("a", "nava"); //获取一级菜单a标签的数组,用Jquery可以直接回去方便些
    var obj_c = document.getElementById("nav").getElementsByTagName("ul"); //二级菜单对象的数组
    number = obj_a.length;
    //遍历一级菜单个数
    for (var i = 0; i < number; i++)
    {
        obj_a[i].index = i;//序号
        obj_a[i].className = "";//css样式
        obj_a[i].onclick = function () //点击事件
        {
            obj_b[this.index].className = "nav_on";//更改样式
            setCookie("show_a", this.index, 0); //记录Cookie
            temp = this.index;//记录当前序号
        }
        obj_a[i].onmouseover = function () { //鼠标移入事件
            if (temp != this.index) { //判断当前鼠标移到的一级菜单是否为当前页面的菜单
                obj_b[this.index].className = "nav_a";//改变样式
            }
            for (var i = 0; i < obj_c.length; i++) {
                obj_c[i].style.display = "none"; //隐藏所有二级菜单
            }
            obj_c[this.index].style.display = "block"; //显示当前鼠标移到的一级菜单对应的二级菜单
        }
        obj_a[i].onmouseout = function () { //鼠标移出事件
            if (temp != this.index) { //判断当前鼠标移到的一级菜单是否为当前页面的菜单
                obj_b[this.index].className = "nav_off"; //取消当前一级菜单按钮样式
                obj_c[this.index].style.display = "none";//隐藏二级菜单
            }
        }
    }
    if (
        getCookie("show_a") != null) { //当Cookie存在时,获取当前页面Cookie
        //设置当前页面一级菜单样式
        obj_a[getCookie("show_a")].className = "nav_on";
        obj_b[getCookie("show_a")].className = "nav_a";
        temp = getCookie("show_a");
    }
    else { //默认第一个菜单按钮样式
        obj_a[0].className = "nav_on";
        obj_b[0].className = "nav_a";
        temp = 0;
    }
    function setCookie(sName, sValue, expireMinute) { //记录Cookie,用;隔开。
        var cookieString = sName + "=" + escape(sValue);
        if (expireMinute > 0) {
            cookieString = cookieString + "; expire=0";
        }
        document.cookie = cookieString;
    }
    function getCookie(sName) {
        var aCookie = document.cookie.split("; ");//分割Cookie
        for (var j = 0; j < aCookie.length; j++) {
            var aCrumb = aCookie[j].split("=");
            if (escape(sName) == aCrumb[0])
                return unescape(aCrumb[1]); //获取Cookie中需要的值
        }
        return null;
    }

CSS代码:

@charset "utf-8";
body { margin:0 auto; text-align:center; font-family:黑体,楷体,sans-serif; font-size: 12px; background-image: url(../images/body_bg.jpg); background-repeat: no-repeat; background-position: center top; color: #8c4d77; }
a { color: #8c4d77; text-decoration: none; }
a:hover { color: #069; text-decoration: none; }
.clear {
    clear: both;
    display: block;
    overflow: hidden;
    visibility: hidden;
    width: 0;
    height: 0;
}
/* 顶部框 logo 导航
----------------------------------------------------------------- */
.top {height: 75px; width: 900px;margin:20px auto; padding:0px;clear:both;}
.nav {height: 46px; width:775px;list-style-type: none;position:relative;top:6px;}
/*全局样式*/
*{
    font-size:12px;
}
#menu ul
{
    display:inline;
    padding:0;
    border:0;
    list-style:none;
    line-height:150%;
    margin-left: 15px;
}
#menu_out
{
    width:896px;
    padding-left:4px;
    margin-left:0px;
    background:url(images/menu_left.png) no-repeat left top;
}
#menu_in{
    background:url(images/menu_right.png) no-repeat right top;
    padding-right:4px;
}
#menu{
    background:url(images/menu_bg.png) repeat-x;
    height:73px;
}
#nav{
    padding-left:20px;
    overflow:hidden;
}
#nav li
{
    position:relative;
    float:left;
    height:30px;
    width:86px;
    margin-top:5.5px;
    margin-left:10px;
    _display:inline;
}
#nav li a{
    display:block;
    height:30px;
    width:86px;
    text-decoration:none;
    cursor:pointer;
    padding:0px;
    padding-left:6px;
    margin-right:-3px;
}
#nav li a span
{
    float:left;
    display:block;
    height:30px;
    width:80px;
    line-height:30px;
    font-size:12px;
    font-weight:bold;
    text-decoration:none;
    text-align:center;
    cursor:pointer;
}
 #nav li a span b
 {
   color:#8C4D77;
   margin-right:6px;
 }
.nav_a 
{
    background:url(images/menu_on_left.png) no-repeat left 100%;
}
.nav_a span{
    color:#333;
    background:url(images/menu_on_right.png) no-repeat right 100%;
}
.nav_off{
    background:none;}
    .nav_off span{
    background:none;}
/*子栏目*/
#nav li ul{
    position:absolute;
    clear:both;
    width:500px;
    left:-10px;
    top:20px;
    display:none;
}
#nav li ul li{
    float:left;
    width:auto;
    height:30px;
    margin-top:15px;
    
}
#nav li ul li a{
    display:block;
    cursor:pointer;
    height:30px;
    width:auto;

    padding:0px 3px;
}
#nav li ul li a span
{
    display:block;
    width:auto;
    height:30px;
    line-height:30px;
    margin:0px;
}
#nav li ul li a:hover{
    text-decoration:none;
    background:url(images/menu_on_left2.gif) no-repeat left 130%;
}
#nav li ul li a:hover span{
    background:url(images/menu_on_right2.gif) no-repeat right 130%;
}

CSS主要是用两个容器装两张图片把分割的左右两张图片合并显示出来(滑动门技术)

下载测试源码

posted @ 2012-10-18 17:41  安之若素冷暖自知  阅读(374)  评论(0编辑  收藏  举报