菜单栏--Dom选择器

  • 制作一个左侧菜单栏,包含菜单目录和内容
  • 点击菜单栏才会展示内容,否则隐藏内容

  

二、事例

  2.1 菜单栏基本样式 

<body>
    <div style="height: 48px;width: 200px">
        <div class="item">
            <div class="header">菜单1</div>
            <div class="content">
                <div>  内容1</div>
                <div>  内容2</div>
                <div>  内容3</div>
            </div>
        </div>
    </div>
</body>

# 将<div class="item"> 复制3份

  初步效果:

  

  2.2 为菜单添加样式  

<style>
        .item .header{
            background-color: #2459a2;
            font-size: 15px;
            line-height: 35px;
            color: white;
        }
 </style>

  初步效果:

  

  2.3 隐藏内容 (第一个默认展开) 

# CSS样式
.hidden{
            display: none;
        }

# 为内容增加隐藏样式
<div class="content hidden">

  

  2.4 点击菜单栏时,出现内容,增加onclick事件  

1. 修改每个菜单的div标签,增加id 和onclick
<div id="i1" class="header" onclick="ChangeMenu('i1');" >菜单1</div>

2.编写onclick事件的JS
function ChangeMenu(nid) {
            // 获取点击菜单栏的标签
            var current_header = document.getElementById(nid);
            // 得到该标签的父父标签,即最外层的div标签,通过children获得列表
            var menu_list = current_header.parentElement.parentElement.children;
            // 简单的做法是为每个content的div加上hidden样式,再去掉点击菜单的hidden样式
            // 循环增加样式
            for(var i=0;i<menu_list.length;i++){
                var current_content = menu_list[i].children[1];
                current_content.classList.add('hidden');
            }
            // 去掉本
            current_header.nextElementSibling.classList.remove('hidden');
        }

  效果:点击其他菜单时,原本的隐藏,点击的展开

  

  完整代码:  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>menu_example</title>
    <style>
        .hidden{
            display: none;
        }
        .item .header{
            background-color: #2459a2;
            font-size: 15px;
            line-height: 35px;
            color: white;
        }
    </style>
</head>
<body>
    <div style="height: 48px;width: 200px">
        <div class="item">
            <div id="i1" class="header" onclick="ChangeMenu('i1');" >菜单1</div>
            <div class="content ">
                <div>  内容1</div>
                <div>  内容2</div>
                <div>  内容3</div>
            </div>
        </div>
        <div class="item">
            <div id="i2" class="header" onclick="ChangeMenu('i2');" >菜单2</div>
            <div class="content hidden">
                <div>  内容1</div>
                <div>  内容2</div>
                <div>  内容3</div>
            </div>
        </div>
        <div class="item">
            <div id="i3" class="header" onclick="ChangeMenu('i3');" >菜单3</div>
            <div class="content hidden">
                <div>  内容1</div>
                <div>  内容2</div>
                <div>  内容3</div>
            </div>
        </div>
        <div class="item">
            <div id="i4" class="header" onclick="ChangeMenu('i4');" >菜单4</div>
            <div class="content hidden">
                <div>  内容1</div>
                <div>  内容2</div>
                <div>  内容3</div>
            </div>
        </div>
    </div>
    <script>
        function ChangeMenu(nid) {
            // 获取点击菜单栏的标签
            var current_header = document.getElementById(nid);
            // 得到该标签的父父标签,即最外层的div标签,通过children获得列表
            var menu_list = current_header.parentElement.parentElement.children;
            // 简单的做法是为每个content的div加上hidden样式,再去掉点击菜单的hidden样式
            // 循环增加样式
            for(var i=0;i<menu_list.length;i++){
                var current_content = menu_list[i].children[1];
                current_content.classList.add('hidden');
            }
            // 去掉本
            current_header.nextElementSibling.classList.remove('hidden');
        }
    </script>
</body>
</html>

  

  

 

posted @ 2018-06-29 14:27  Bigberg  阅读(603)  评论(0编辑  收藏  举报