zoukankan      html  css  js  c++  java
  • 菜单栏--Dom选择器

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

      

    二、事例

      2.1 菜单栏基本样式 

    <body>
        <div style="height: 48px; 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; 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>
    

      

      

  • 相关阅读:
    iframe的边框如何去掉
    vue-computed计算属性用法
    Vue-input框checkbox强制刷新
    TED 积极心理学感悟(二)
    路由器使用子网掩码进行分组转发的过程
    DHCP 服务器和 DHCP 客户端的交互过程
    IPv4 协议中的 NAT 协议和 CIDR 协议
    IPv6 是解决 IPv4 地址耗尽问题的根本途径
    TED 积极心理学感悟
    初级错误之 for 中的局部变量
  • 原文地址:https://www.cnblogs.com/bigberg/p/9243268.html
Copyright © 2011-2022 走看看