JavaScript+CSS实现经典的树形导航栏

在一些管理系统里面,一般右侧都会有树形的导航栏,点击一下就会出现下拉菜单,显示出来该父菜单下面的子菜单

项目,然后配以图片,和CSS的效果,可以说是非常常用的功能,现在做一个项目,正好用到这个功能,于是到处寻找

资料,从Struts的Dojo插件到Dojo的学习,各种看,结果各种不懂。那个悲催啊!!!结果从头再来,苦学CSS和JS,

虽然现在JS水平不咋的,但是还是可以写出一个一般的导航菜单栏了,自己看看还是说的过去,这里拿出来Show一

下,回来自己好用。

首先上最开始的左侧菜单HTML代码

    <!DOCTYPE html>
    <html>
      <head>
        <title>left.html</title>  

        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="this is my page">
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <script type="text/javascript" src="/HTML/JavaScript/left.js"></script>  

        <link rel="stylesheet" href="../css/left.css" type="text/css"></link>
    </head>  

    <body>
        <div class="show"><span class="fold1" onclick="changevisible(this)"><a href="#">基础信息管理</a></span>
             <div class="hidden"><span class="2blank">   <img src="/HTML/img/sanjiao.gif"/></span><span class="fold"><a href="/HTML/test/right.html" target="right" >主管单位信息</a></span></div>
             <div class="hidden"><span class="2blank">   <img src="/HTML/img/sanjiao.gif"/></span><span class="fold"><a href="#">建设单位信息</a></span></div>
             <div class="hidden"><span class="2blank">   <img src="/HTML/img/sanjiao.gif"/></span><span class="fold"><a href="#">监管单位信息</a></span></div>
             <div class="hidden"><span class="2blank">   <img src="/HTML/img/sanjiao.gif"/></span><span class="fold"><a href="#">礁石信息</a></span></div>
             <div class="hidden"><span class="2blank">   <img src="/HTML/img/sanjiao.gif"/></span><span class="fold"><a href="#">项目信息</a></span></div>
             <div class="hidden"><span class="2blank">   <img src="/HTML/img/sanjiao.gif"/></span><span class="fold"><a href="#">标书信息</a></span></div>
       </div>
       <br/>  

       <div class="show"><span class="fold1" onclick="changevisible(this)"><a href="#">招投标管理   </a></span>
             <div class="hidden"><span class="2blank">   <img src="/HTML/img/sanjiao.gif"/></span><span class="fold"><a href="/HTML/test/right1.html" target="right">发布招标书</a></span></div>
             <div class="hidden"><span class="2blank">   <img src="/HTML/img/sanjiao.gif"/></span><span class="fold"><a href="#">修改招标信息</a></span></div>
             <div class="hidden"><span class="2blank">   <img src="/HTML/img/sanjiao.gif"/></span><span class="fold"><a href="#">查看投标标书</a></span></div>
       </div>
       <br/>  

       <div class="show"><span class="fold1" onclick="changevisible(this)"><a href="#">项目管理       </a></span>
             <div class="hidden"><span class="2blank">   <img src="/HTML/img/sanjiao.gif"/></span><span class="fold"><a href="#">项目内容</a></span></div>
             <div class="hidden"><span class="2blank">   <img src="/HTML/img/sanjiao.gif"/></span><span class="fold"><a href="#">项目进度</a></span></div>
             <div class="hidden"><span class="2blank">   <img src="/HTML/img/sanjiao.gif"/></span><span class="fold"><a href="#">日志查询</a></span></div>
             <div class="hidden"><span class="2blank">   <img src="/HTML/img/sanjiao.gif"/></span><span class="fold"><a href="#">年度查询</a></span></div>
             <div class="hidden"><span class="2blank">   <img src="/HTML/img/sanjiao.gif"/></span><span class="fold"><a href="#">合同管理</a></span></div>
       </div>  

      </body>
    </html>  

然后是对应的CSS文件

    #sidenav{
        width: 300px;
    }  

    .show{
        display:block;
        width:190px;   

    }  

    .hidden{
        display:none;
        background-color: white;
    }  

    .fold{
        width:20px;
        height:40px;
        padding:0px 10px 0px 10px;
        background-image:url("M1.gif");
        background-repeat:no-repeat;
    }  

    .fold1{
        width:20px;
        height:40px;
        padding:0px 10px 0px 10px;
        background-image:url("M1.gif");
        background-repeat:no-repeat;
    }  

    .fold1 a{
        font-size: 12px;
        background-image:url("/HTML/img/title.jpg");
        padding-left: 30px;
        padding-right:50px;
        padding-top:55px;
        text-align: center;
    }
    .expend{
        width:20px;
        height:20px;
        padding:0px 10px 0px 10px;
        background-image:url("M1.gif");
        background-repeat:no-repeat;  

    }
    .2blank{
        width:20px;
       background-color: white;
    }  

    a:LINK {
        text-decoration: none;
    }  

    a:HOVER {
        color: red;
    }  

    a:VISITED {
        color: gray;
    }  

    .img1 img{
        width: 1326px;
        height: 90px;
    }  

然后是JavaScript代码

function changevisible(element){
        var children = element.parentNode.childNodes;  

        for(var i= 0; i<children.length;i++){  

            if(children[i].nodeName == "DIV"){  

                var className = children[i].className;         

                if(className == "show" ){  

              //      element.className="fold";
                    children[i].className="hidden";
                }
               else{
              //     element.className="expend";
                     children[i].className="show";
                }
            }
        }
    }  

然后再放上一个整体的界面

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>all.html</title>  

      </head>  

      <frameset rows="20%,*" frameborder="no">
            <frame src="/HTML/test/top.html"/>  

            <frameset cols="15%,*" frameborder="yes">
                    <frame src="/HTML/test/left.html" noresize="noresize"/>  

                    <!-- frame里面有一个name属性,用来表名属性来进行超链接替换 -->
                    <frame src="/HTML/test/right.html" noresize="noresize" name="right"/>
            </frameset>  

      </frameset>  

    </html>  

效果图

时间: 2024-12-13 03:23:28

JavaScript+CSS实现经典的树形导航栏的相关文章

CSS+JQ实现炫酷导航栏

一步一步的学习,后面再做个综合页面 1.当前页面高亮显示的导航栏 首先是HTML代码,很简单,ul+li实现菜单 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>导航栏一</title> </head> <body> <header class="header&qu

css三级下拉的导航栏

#menu{ height: 65px; width:100%; background-color: rgba(0, 0, 0, 0.5);}#menu ul{ list-style: none;}#menu ul li{ float: left; position: relative;/*如果这里不设置为relative的话,显示的下拉是水平的*/}#menu ul li a {/*最头部的导航链接的样式设置*/text-align: center;border-right:1px solid

css怎样使顶端悬浮导航栏不遮住下面一层页面内容

在两个层之间加这个<span class="blank" style="height:20px;"></span>,其中高度可以自己设置成自己需要的高度css这样:.blank{ clear:both; overflow:hidden; display:block; overflow:hidden;}

css导航栏下拉菜单代码【转自http://zxm.92.blog.163.com/blog/static/544600282010727112723874/】

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" c

淘宝分类导航条;纯css实现固定导航栏

效果如下: 页面如下: <!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> <style type="t

JavaScript网站设计实践(二)实现导航栏当前所选页面的菜单项高亮显示

一.(一)中的代码还可以修改的地方. 在(一)中,如果是运行在服务器下,如apache等,可以把head和navigation的div抽取出来,放置在另一个html文件里,然后在页面中,include进来.这样,当要对导航栏进行修改时,只需要修改一个文件,而不用修改所有相关的页面文件.不过,我这里没有这样做,没有抽取出来. 二.实现当前页面的标识+不同页面的head头部背景图片的改变 现在在(一)实现的基础之上,来实现导航栏当前所选页面的菜单项高亮显示,让访问者一路了然知道"我正在这里"

谈谈一些有趣的CSS题目(八)-- 纯CSS的导航栏Tab切换方案

开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉到生僻的 CSS 属性,赶紧去补习一下吧. 不断更新,不断更新,不断更新,重要的事情说三遍. 谈谈一些有趣的CSS题目(一)-- 左边竖条的实现方法 谈谈一些有趣的CSS题目(二)-- 从条纹边框的实现谈盒子模型 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少 谈谈一些有趣

【CSS】扁平化,支持IE6的含有方块超级链接的导航栏与含有支持IE8的下拉菜单的导航栏

上次在<[Bootstrap]导航栏navbar在IE8上的缺陷与解决方案>(点击打开链接)给大家推荐过导航栏怎么写, 这次不用任何框架,纯手写CSS,原生态,方便各位改写!请笑纳. 一.首先是含有方块超级链接的导航栏,如下图: 这个东西个人觉得拼接在一些灰色巨幕下面做首页的导航栏不错 或者放在一些标签页上面也是可以的 代码如下: <div style="width:70%; text-align:center; margin-left:auto; margin-right:a

Css之导航栏学习

Css: ul { list-style-type:none; margin:0; padding:0; overflow:hidden; background-color:blue; /*固定在顶部*/ position:fixed; top:0; width:100%; } li { float:left; } /* 出来最后一个选项(last-child) 其他的都添加分割线 */ li { border-right: 1px solid #bbb; } li:last-child { b