前端:实现二级菜单(二级菜单悬浮在一级菜单左侧)

效果

代码

<!DOCTYPE html>
<html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>左侧二级菜单实现</title>
        <style>
        * {
            margin: 0;
            padding: 0;
        }

        /* 取消所有列表的序号 */
        ul,
        li {
            list-style-type: none;
        }

        /* 取消所有超链接的下划线 */
        a {
            text-decoration-line: none;
            color: white;
        }

        /* 全部样式 */
        .all_content {
            display: flex;
        }

        /* 左侧导航栏 */
        .left_nav {
            background-color: rgb(83, 151, 230);
            width: 5%;
            height: 100vh;
        }
        .left_nav p{
            width: 100%;
            text-align: center;
            font-size:120%;
            color: white;
            font-weight: bold;
            margin:10px 0;
        }
        /* 外层li */
        .menu-item {
            text-align: center;
            padding: 10px 0;
            background-color: rgb(83, 151, 230);
            position: relative;
        }
        .submenu {
            position: absolute;
            left: 100%;
            top: 50%;
            transform: translateY(-50%);
            display: none;
            background-color: rgb(120, 170, 228);
            white-space: nowrap;
        }
        .submenu:before {
            content: "";
            position: absolute;
            left: -10px;
            top: 50%;
            transform: translate(-50%, -50%) rotate(45deg);
            width: 10px;
            height: 10px;
            background-color: rgb(120, 170, 228);
        }
        .submenu-li {
            background-color: rgb(120, 170, 228);
            width: 100%;
            padding: 5px 10px;
        }

        .submenu-link:hover {
            font-weight: 600;
        }

        .menu-item:hover .submenu {
            display: block;
        }

        /* 右侧内容 */
        .right_content {
            width: 95%;
        }

        .content {
            display: none;
            /* 隐藏所有内容 */
        }

        .content.active {
            display: block;
            /* 显示被激活的内容 */
        }
    </style>
    </head>

    <body>
        <div class="all_content">
            <div class="left_nav">
                <p>菜单</p>
                <ul class="menu">
                    <li class="menu-item">
                        <a href="#" class="menu-link">销售</a>
                        <ul class="submenu">
                            <li class="submenu-li"><a href="#"
                                    class="submenu-link"
                                    data-content-id="content1">功能1</a></li>
                            <li class="submenu-li"><a href="#"
                                    class="submenu-link"
                                    data-content-id="content2">报表1</a></li>
                        </ul>
                    </li>
                    <li class="menu-item">
                        <a href="#" class="menu-link">采购</a>
                        <ul class="submenu">
                            <li class="submenu-li"><a href="#"
                                    class="submenu-link"
                                    data-content-id="content3">功能2</a></li>
                            <li class="submenu-li"><a href="#"
                                    class="submenu-link"
                                    data-content-id="content4">报表2</a></li>
                        </ul>
                    </li>
                </ul>
            </div>
            <div class="right_content">
                <div id="content1" class="content">功能1的内容</div>
                <div id="content2" class="content">报表1的内容</div>
                <div id="content3" class="content">功能2的内容</div>
                <div id="content4" class="content">报表2的内容</div>
            </div>
        </div>
        <script>
        // 获取所有一级菜单项
        var menuItems = document.querySelectorAll('.menu-item');
        // 为每个一级菜单项添加点击事件处理程序
        menuItems.forEach(function (menuItem) {
            var submenuLinks = menuItem.querySelectorAll('.submenu-link');
            var contents = document.querySelectorAll('.content');
            // 二级菜单项点击事件处理程序
            submenuLinks.forEach(function (submenuLink) {
                submenuLink.addEventListener('click', function (e) {
                    e.preventDefault();

                    // 隐藏所有内容
                    contents.forEach(function (content) {
                        content.classList.remove('active');
                    });

                    // 获取被点击项对应的内容ID
                    var contentId = submenuLink.getAttribute('data-content-id');

                    // 添加激活状态到对应的内容
                    var activeContent = document.getElementById(contentId);
                    activeContent.classList.add('active');
                });
            });
        });
    </script>
    </body>

</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Django 中实现左侧边栏二级导航栏有多种方法,以下是其中一种常见的实现方法: 1. 在左侧边栏中添加一个可展开的菜单,用于显示二级导航栏的选项。 2. 在模板文件中定义一个包含左侧边栏和二级导航栏的 HTML 结构,二级导航栏的选项可以使用 Django 的 URL 模板标签或手动添加链接。 3. 在视图函数中定义一个上下文变量,用于传递给模板文件显示二级导航栏的选项。 4. 在左侧边栏菜单中添加一个 JavaScript 代码段,用于在鼠标悬停在菜单项上时显示二级导航栏的选项。 具体实现步骤如下: 1. 在左侧边栏中添加一个可展开的菜单,代码如下: ```html <ul class="sidebar-menu"> <li class="treeview"> <a href="#"> <i class="fa fa-dashboard"></i> <span>Dashboard</span> <i class="fa fa-angle-left pull-right"></i> </a> <ul class="treeview-menu"> <li><a href="#">Submenu 1</a></li> <li><a href="#">Submenu 2</a></li> <li><a href="#">Submenu 3</a></li> </ul> </li> <li><a href="#"><i class="fa fa-files-o"></i> <span>Pages</span></a></li> <li><a href="#"><i class="fa fa-th"></i> <span>Widgets</span></a></li> </ul> ``` 2. 在模板文件中定义一个包含左侧边栏和二级导航栏的 HTML 结构,代码如下: ```html {% load static %} <!DOCTYPE html> <html> <head> <title>My Website</title> <link rel="stylesheet" href="{% static 'css/style.css' %}"> </head> <body> <aside class="main-sidebar"> <section class="sidebar"> <ul class="sidebar-menu"> <li class="treeview"> <a href="#"> <i class="fa fa-dashboard"></i> <span>Dashboard</span> <i class="fa fa-angle-left pull-right"></i> </a> <ul class="treeview-menu"> {% for submenu in dashboard_submenus %} <li><a href="{{ submenu.url }}">{{ submenu.name }}</a></li> {% endfor %} </ul> </li> <li><a href="#"><i class="fa fa-files-o"></i> <span>Pages</span></a></li> <li><a href="#"><i class="fa fa-th"></i> <span>Widgets</span></a></li> </ul> </section> </aside> <div class="content-wrapper"> {% block content %} {% endblock %} </div> </body> </html> ``` 3. 在视图函数中定义一个上下文变量,用于传递给模板文件显示二级导航栏的选项,代码如下: ```python from django.shortcuts import render def dashboard(request): dashboard_submenus = [ {'name': 'Submenu 1', 'url': '/dashboard/submenu-1/'}, {'name': 'Submenu 2', 'url': '/dashboard/submenu-2/'}, {'name': 'Submenu 3', 'url': '/dashboard/submenu-3/'}, ] context = {'dashboard_submenus': dashboard_submenus} return render(request, 'dashboard.html', context) ``` 4. 在左侧边栏菜单中添加一个 JavaScript 代码段,用于在鼠标悬停在菜单项上时显示二级导航栏的选项,代码如下: ```javascript var treeviewMenu = $('.sidebar-menu').tree(); treeviewMenu.on('opened.tree', function() { var activeSubMenu = $(this).find('.treeview.active').find('.treeview-menu'); activeSubMenu.slideDown('normal'); }); treeviewMenu.on('closed.tree', function() { var activeSubMenu = $(this).find('.treeview.active').find('.treeview-menu'); activeSubMenu.slideUp('normal'); }); ``` 以上就是实现 Django 左侧边栏二级导航栏的一种常见方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值