原生js+css实现二级伸缩菜单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>原生js实现二级伸缩菜单</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        ul,li{
            list-style: none;
        }
        .closed{
            display: block;
            width: 200px;
            background-color: coral;
        }
        #manager ul li{
            width: 200px;
            line-height: 30px;
            text-align: center;
            cursor: pointer;
        }
       .hide{
            display: none;
        }
        .show{
            display: block;
        }
        .open{
            display: block;
            background-color: coral;
        }
        .hide{
            display: none;
        }
        #manager ul li.pro{
            border:1px solid #fff;
        }
        #manager ul li ul li{
            padding:3px 0;
            border: 0;
            color:lightgray;
            line-height: 20px;
            border-top:1px solid #fff;
            background-color: darkorchid;
        }
        #manager ul li ul li:hover{
            color: #fff;
        }
        #manager ul li ul li:last-child{
            border-bottom:1px solid #fff;
        }
    </style>
</head>
<body>

    <div id="manager">
        <ul class="tree">
            <li class="pro">
                <span class="open" onclick="toggleTable(this)">考勤管理</span>
                <ul class="show">
                    <li>日常考勤</li>
                    <li>请假申请</li>
                    <li>加班/出差</li>
                </ul>
            </li>
            <li class="pro">
                <span class="closed" onclick="toggleTable(this)">信息中心</span>
                <ul class="hide">
                    <li>通知公告</li>
                    <li>公司新闻</li>
                    <li>规章制度</li>
                </ul>
            </li>
            <li class="pro">
                <span class="closed" onclick="toggleTable(this)">协同办公</span>
                <ul class="hide">
                    <li>公文流转</li>
                    <li>文件中心</li>
                    <li>内部邮件</li>
                    <li>即时通讯</li>
                    <li>短信提醒</li>
                </ul>
            </li>
            <li class="pro">
                <span class="closed" onclick="toggleTable(this)">合同管理</span>
                <ul class="hide">
                    <li>内部合同</li>
                    <li>外部合同</li>
                    <li>到期合同</li>
                    <li>未签合同</li>
                    <li>保密合同</li>
                </ul>
            </li>
            <li class="pro">
                <span class="closed" onclick="toggleTable(this)">人事流程</span>
                <ul class="hide">
                    <li>人事入职</li>
                    <li>职工保险</li>
                    <li>职工升值</li>
                    <li>薪资计划</li>
                    <li>员工福利</li>
                </ul>
            </li>
            <li class="pro">
                <span class="closed" onclick="toggleTable(this)">客户管理</span>
                <ul class="hide">
                    <li>企业客户</li>
                    <li>一般客户</li>
                    <li>重要客户</li>
                    <li>小区客户</li>
                    <li>外地客户</li>
                </ul>
            </li>
        </ul>
    </div>
    <script src="js/jquery-3.2.1.min.js"></script>
    <script>
        function toggleTable(span){
//            如果span的class为open
            if(span.className=="open"){
//                将span的class设为closed
                span.className="closed";
//                将span的下一个兄弟元素的class改为hide
                span.nextElementSibling.className="hide";
            }else{//否则
//                查找class为tree的元素下的一个class为open的span,保存在open中
                var open=document.querySelector("[class=tree] span[class=open]");
                if(open!=null){
//                    设置open的class为closed
                    open.className="closed";
//                    设置open的下一个兄弟元素的class为hide
                    open.nextElementSibling.className="hide";
                }
                span.className="open";
                span.nextElementSibling.className="show";
            }
        }
    </script>

</body>
</html>
时间: 2024-10-08 04:08:26

原生js+css实现二级伸缩菜单的相关文章

原生js写的一个弧形菜单插件

弧形菜单是一种半弧式或者全弧形菜单,是一种不同于传统横向或者竖向菜单形式的菜单.最近在网上看到好多人写出了这种效果,于是也尝试自己写了一个. 实现方式:原生态js 主要结构: 1.参数合并 1 var defaultPra = { 2 mainMenuId: "ArcMenu",//主菜单id 3 menuBoxId:"menuBox",//菜单包裹id 4 position: "",//弧形菜单 5 customPosition:"0

HTML+JS+CSS 实现下拉菜单

最近在看视频学习做一些HTML+JS+CSS的实例,第一个是实现下拉菜单. 5.7 制作的思路是:1.静态网页的制作 2.动态特效实现菜单的显示和隐藏(三种方法:css.JavaScript.jQuery) 3.浏览器的兼容问题(低版本IE可能不支持等) 在用css实现时,由于盒子模型有自己默认的margin和padding值,所以要reset. 有一点比较有疑问的实,老师在视频里说position:absolute要和left.top同时使用.这是为什么?在实现的时候,我并没有使用left和t

纯css实现二级导航菜单效果,通过简单的鼠标事件操作页面元素样式变换实现二级导航菜单的功能,非常简单实用,

HTML代码如下 <!-- 头部导航栏开始--><div id="nav"><dl class="sy"><dt><a class="first" href="#" >首页</a></dt><dd class="line">|</dd><dd class="triangle"

Java学习总计(二十六)——JavaScript正则表达式,Js表单验证,原生js+css页面时钟

一.JavaScript正则表达式1.exec检索字符串中指定的值,返回找到的值,并确定其位置2.test检索字符串中指定的值,返回true或false3.正则表达式对象的创建:(1)方式一:Var rgex=new RegExp("[0-9]","模式");(2)方式二:简便写法,用双斜杠//把正则表达式的内容括起来例1(正则创建,使用test()方法): <!DOCTYPE html> <html> <head> <me

除ie6-浏览器---无缝上下左右交叉运动----原生js+css

<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <style> *{padding:0;margin:0;} img{vertical-align:top;border:none;} a{text-decoration:none;} #Left { float:left; margin:150px 0 0

原生JS的地区二级联动,很好理解的逻辑

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

3D视觉差---原生js+css

1 <!doctype html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title></title> <style> * { padding: 0; margin: 0; }body { background: #42509a; } u

分别用js 和 html/css实现下拉菜单特效

在网站的制作过程,我们常常会遇到导航栏中会出现一级菜单,二级菜单这样的现象,到底如何实现呢?接下里我们用两种方法来实现: 1.用js来实现此效果: <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <style type="text/css">

实用js+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><meta http-equiv="Content-Typ