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

news2024/11/21 0:16:42

效果

代码

<!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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1269264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正向和反向代理区别

文章目录 正向代理反向代理二者区别参考 正向代理 正向代理就是一个位于客户端和目标服务器之间的服务器&#xff0c;之间的这个服务器就是代理服务器 客户端为了从目标服务器获取内容&#xff0c;但是客户端由于限制无法直接访问到目标服务器&#xff0c;那么客户端就可以向…

VMware Workstation 无法连接到虚拟机问题排查(一)

文章目录 VMware Workstation无法连接到虚拟机问题排查1. 问题概述2. 排查思路3. 问题修改4. 总结 VMware Workstation无法连接到虚拟机问题排查 近期在使用新电脑安装VMware Workstation&#xff0c;启动虚拟机实例的时候出现失败&#xff0c;提示为:“VMware Workstation 无…

高性价比的挂耳式蓝牙耳机有哪些?学生党必入的几款蓝牙耳机推荐

在快节奏的现代生活中&#xff0c;蓝牙耳机已经成为了许多人不可或缺的伙伴&#xff0c;而对于预算有限的学生党来说&#xff0c;一副高性价比的挂耳式蓝牙耳机无疑是最理想的选择之一。本文将围绕这一主题&#xff0c;为大家推荐几款价格亲民、性能出色的挂耳式蓝牙耳机&#…

汉威科技亮相北京链博会:感知驱动,智链出行

11月28日&#xff0c;首届中国国际供应链促进博览会在北京中国国际展览中心&#xff08;顺义馆&#xff09;举办&#xff0c;该展会是全球首个以供应链为主题的国家级展会&#xff0c;设置智能汽车链、绿色农业链、清洁能源链、数字科技链、健康生活链5大链条和供应链服务展区&…

JRT实现缓存协议

上一篇介绍的借助ORM的增、删、改和DolerGet方法&#xff0c;ORM可以很精准的知道热点数据做内存缓存。那么就有一个问题存在&#xff0c;即部署了多个站点时候&#xff0c;如果用户在一个Web里修改数据了&#xff0c;那么其他Web的ORM是不知道这个变化的&#xff0c;其他Web还…

强基固本,红海云数字化重塑提升国企干部管理能力

国有企业的干部管理体系建设具有重要的战略意义&#xff0c;对于构建高素质专业化的干部队伍&#xff0c;推动企业高质量发展至关重要。特别是在党的二十大以后&#xff0c;建设中国特色现代企业制度&#xff0c;在完善公司治理中加强党的领导&#xff0c;加强党管干部党管人才…

15.spring源码解析-invokeBeanFactoryPostProcessors

BeanFactoryPostProcessor接口允许我们在bean正是初始化之前改变其值。此接口只有一个方法: void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory);有两种方式可以向Spring添加此对象: 通过代码的方式: context.addBeanFactoryPostProcessor 通过xml…

【UGUI】事件侦听EventSystem系统0学

前言介绍 EventSystem是Unity UGUI中的一个重要组件&#xff0c;用于处理用户输入事件&#xff0c;如点击、拖拽、滚动等。它负责将用户输入事件传递给合适的UI元素&#xff0c;并触发相应的事件回调函数&#xff08;就是你想要做的事情&#xff0c;自定义函数&#xff09;。 …

Chrome显示分享按钮

分享按钮不见了&#xff01; Chrome://flags Chrome Refresh 2023 Disabled 左上角的标签搜索会到右上角。

《第一行代码:Android》第三版-3.4.4体验Activity的生命周期

本文的代码是在主Activity中&#xff0c;重载了几个生命周期函数&#xff0c;在日志中打印出对应的日志信息&#xff0c;有两个按钮&#xff0c;负责启动另外的Activity&#xff0c;并回到主Activity 由此查看日志&#xff0c;来体会生命周期。 MainActivity.kt 文件如下 pac…

井盖倾斜监测方式,智能井盖传感器效果

大家是否都曾经想过&#xff0c;为什么路面上的井盖容易发生事故&#xff1f;其实这主要是因为井盖倾斜或者位移等异常状态出现时&#xff0c;由于人员巡查的范围较大从而无法及时察觉所导致的。为了保障道路行人和车辆的安全&#xff0c;对于井盖的监测需要不断完善和升级。而…

C++-多态

目录 一.多态的概念 二.多态的条件 三.对实现多态的条件进行解释 四.override和final 五.三重对比 六.虚函数表和虚函数表指针 七.静态的多态和动态的多态 一.多态的概念 多态的概念&#xff1a;通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为…

《第一行代码:Android》第三版-如何为一个Activity添加layout文件

确切地说就是讲如何给一个不带view的Activity添加一个view&#xff0c;就是添加一个layout文件。 新建安卓项目&#xff0c;如果选择&#xff1a;就会给你创建一个没有view的Activity&#xff0c;如果后来你发现需要为这个Activity添加view&#xff0c;就是添加一个布局文件怎…

高速USB转以太网芯片CH397 UBOOT使用教程

简介 CH397 是一款高集成度、低功耗的 USB 网卡芯片&#xff0c;内置青稞 RISC-V 处理器、符合 USB2.1 协议规 范的高速 USB 控制器及收发器 PHY、以及符合 IEEE802.3 协议规范、支持 10M/100M 网络的以太网 MACPHY。已适配各类台式电脑、笔记本电脑、平板电脑、游戏机等的标准…

香港身份、香港永居身份、香港护照区别,三种证件之间是什么关系?

香港身份、香港永居身份、香港护照区别&#xff0c;三种证件之间是什么关系&#xff1f; 在港“通常性”住满7年之后&#xff0c;可以申请永居身份&#xff01; 香港身份&#xff1a;也可以称之为临时身份&#xff0c;无论通过香港优才计划、高才通计划、专才计划或者留学拿身份…

ASUS(华硕) B760M-AYW WIFI D4_解决wifi不能使用

1、最近新购买了一套 diy电脑主机&#xff0c;选用的是 ASUS B760M-AYW WIFI D4电脑主板 win10 系统&#xff0c;到货后 发现右下角电脑图标处及网络适配器中 没有wifi选项 首先 在官网和旗舰店客服处&#xff0c;确认了 该主板 有集成wifi模块&#xff0c;鲨鱼鳍天线未安装…

一篇让小白彻底搞懂性能调优

什么是性能调优&#xff1f;(what) 为什么需要性能调优&#xff1f;(why) 什么时候需要性能调优&#xff1f;(when) 什么地方需要性能调优&#xff1f;(where) 什么人来进行性能调优&#xff1f;(who) 怎么样进行性能调优&#xff1f;(How) 硬件配置&#xff1a;CUP Xeon…

【获奖作品公开】和鲸社区全方位协力师生备战中国大学生计算机设计大赛

11 月 23 日&#xff0c;2021 - 2023 年&#xff08;第 14 - 16 届&#xff09;中国大学生计算机设计大赛获奖作品正式上线和鲸社区&#xff01; 中国大学生计算机设计大赛&#xff08;下简称“大赛”或“4C”&#xff09;是由教育部认证、我国高校面向本科生最早的赛事之一&a…

一文读懂Asyncio

什么是Asyncio asyncio 是用来编写并发代码的库&#xff0c;使用async/await语法。 asyncio 被用作多个提供高性能 Python 异步框架的基础&#xff0c;包括网络和网站服务&#xff0c;数据库连接库&#xff0c;分布式任务队列等等。 asyncio 往往是构建 IO 密集型和高层级结构化…

无人机覆盖路径规划综述

摘要&#xff1a;覆盖路径规划包括找到覆盖某个目标区域的每个点的路线。近年来&#xff0c;无人机已被应用于涉及地形覆盖的多个应用领域&#xff0c;如监视、智能农业、摄影测量、灾害管理、民事安全和野火跟踪等。本文旨在探索和分析文献中与覆盖路径规划问题中使用的不同方…