首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用js写二级导航菜单

好的,下面是一个使用JavaScript实现二级导航菜单的示例。这个示例包括HTML、CSS和JavaScript代码,以确保菜单在点击时能够正确展开和收起。

HTML部分

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>二级导航菜单</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <nav class="navbar">
        <ul class="nav-list">
            <li class="nav-item">
                <a href="#">首页</a>
            </li>
            <li class="nav-item">
                <a href="#" class="dropdown-toggle">产品</a>
                <ul class="dropdown-menu">
                    <li><a href="#">产品1</a></li>
                    <li><a href="#">产品2</a></li>
                    <li><a href="#">产品3</a></li>
                </ul>
            </li>
            <li class="nav-item">
                <a href="#">关于我们</a>
            </li>
            <li class="nav-item">
                <a href="#">联系我们</a>
            </li>
        </ul>
    </nav>
    <script src="script.js"></script>
</body>
</html>

CSS部分(styles.css)

代码语言:txt
复制
body {
    font-family: Arial, sans-serif;
}

.navbar {
    background-color: #333;
}

.nav-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
}

.nav-item {
    position: relative;
}

.nav-item a {
    display: block;
    padding: 15px 20px;
    color: #fff;
    text-decoration: none;
}

.nav-item a:hover {
    background-color: #555;
}

.dropdown-menu {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    background-color: #333;
    list-style: none;
    padding: 0;
    margin: 0;
    min-width: 150px;
}

.dropdown-menu li a {
    padding: 10px 20px;
}

.dropdown-menu li a:hover {
    background-color: #555;
}

JavaScript部分(script.js)

代码语言:txt
复制
document.addEventListener('DOMContentLoaded', function() {
    const dropdownToggles = document.querySelectorAll('.dropdown-toggle');

    dropdownToggles.forEach(toggle => {
        toggle.addEventListener('click', function(e) {
            e.preventDefault();
            const dropdownMenu = this.nextElementSibling;
            if (dropdownMenu.style.display === 'block') {
                dropdownMenu.style.display = 'none';
            } else {
                dropdownMenu.style.display = 'block';
            }
        });
    });
});

解释

  1. HTML部分:定义了导航栏的结构,包括一级菜单和二级菜单。
  2. CSS部分:设置了导航栏的样式,包括背景颜色、字体、间距等,并定义了二级菜单的显示样式。
  3. JavaScript部分:添加了一个事件监听器,当点击一级菜单中的“产品”链接时,会切换二级菜单的显示状态。

应用场景

这种二级导航菜单常用于网站的顶部导航栏,特别是在需要展示多层次分类信息的网站中。例如,电商网站的产品分类、博客网站的文章分类等。

优势

  • 用户体验:用户可以通过点击快速访问不同层次的页面,提高了导航的便捷性。
  • 结构清晰:通过嵌套的列表结构,可以清晰地展示网站的层次关系。
  • 易于实现:使用HTML、CSS和JavaScript的组合,可以快速实现并定制化。

希望这个示例能帮助你理解如何使用JavaScript创建二级导航菜单。如果有任何进一步的问题或需要调整的地方,请随时告诉我!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 纵向、横向导航菜单及二级弹出菜单

    一、纵向导航菜单及二级弹出菜单 首先在body中添加一个div标签,其中包含ulli ul的标签结构存放网站菜单,效果如下: <%@ page language="java" import="java.util...a{color:#000;text-decoration:none;} /*设置鼠标悬浮超链接上时改变字体颜色*/ a:hover{color:#F00;} 下面是将同一子菜单下的菜单移动位置变为父级菜单的一部分...我们要实现的效果是子菜单不占据空间,所以可以使用position:absolute;让子元素脱离文档流,使用left和top属性确定子菜单相对于父级菜单的位置。...,当鼠标离开父级菜单时隐藏子菜单,因此可以使用display的none属性隐藏菜单,当鼠标移动到父级菜单上时使用display:block显示菜单。...合作媒体 二、横向导航菜单及二级菜单

    5.4K30

    zblogphp怎么设置二级导航菜单(图文教程)

    说真的,接触了不少开源程序,很多都是自动生成二级菜单的,可是我们的zbp却得我们自己手动,我的每个主题都有设置二级菜单的代码,很简单,我以为写主题说明的时候一笔带过就好,这里应该无需浪费时间的。...首先,以mxlee(梦想家)主题为例,找到主题说明,介绍二级菜单的代码:     一级菜单     ...         二级菜单         二级菜单...      说真的,如果你实在不懂,可以直接复制这段代码,然后找到后台,左侧菜单的模块管理--最上方的导航栏,如图 ?...点击提交,回到首页,二级菜单已经完成了。就是这么简单。 ? 然后修改链接就得你自己手动修改了,毕竟每个人的分类和链接是不一样的; 什么你居然不知道你分类的链接是什么?

    1.4K40

    JS-鼠标经过显示二级菜单

    会在加完120后再执行,没想到他先执行的这个,并且弹出ullistElement,即说明他找到了subNav的ul, 问题来了,当加载完成后,请你尝试把鼠标再放到二级菜单上移动一下,你没选择一个二级菜单...,他就是把这三个alert再执行一遍,然后你就会看到ul的长度又加了20,当你不停的上下晃动鼠标,二级菜单就会不停的添加。...原因:这里,通过这个代码:alert(aLi.length);原因就明显了,因为开头的aLi,获得的是body中所有的li,包括二级菜单的。...就是说你在二级菜单的每一个li上晃一下,他都会认为你是在重新执行了aLi.onmouseover这个代码,流程就再走了一遍。...} } }   后来我也发现了收缩不干净,总是多出外面几像素,但是我把border删掉他就收缩干净了,我不知道在js

    8.2K100

    一个Web二级菜单的实现(俺新手随便写的)

    ,二级菜单显示,鼠标移出一级菜单时,二级菜单隐藏 (1)元素显示使用display:block属性,隐藏使用display:none属性 2、二级菜单显示在一级菜单的右侧 (1)给一级菜单和二级菜单共同的父元素设置相对定位...(position: relative) (2)给二级菜单设置绝对定位(position: absolute),并设置左侧位移(left)的值为一级菜单的宽度,上放位移(top)的值为0 3、一级菜单的文字和二级菜单的文字水平居中显示...4、一级菜单的文字和二级菜单的文字垂直居中显示 5、一级菜单的每一项和二级菜单的每一项有下边框,边框为点线(dotted) 6、一级菜单的最后一项和二级菜单的最后一项没有下边框(可以使用li:last-child...,二级菜单隐藏 2、二级菜单显示在一级菜单的右侧 一级菜单 1、一级菜单的文字水平居中显示 2、一级菜单的文字垂直居中显示 3、一级菜单的每一项有下边框,边框为点线(dotted) 4、一级菜单的最后一项没有下边框...二级菜单 1、二级菜单的文字水平居中显示 2、二级菜单的文字垂直居中显示 3、二级菜单的每一项有下边框,边框为点线(dotted) 4、二级菜单的最后一项没有下边框 效果 <!

    1.4K20

    居然可以用 js 写 PPT?

    居然可以用 js 写 PPT 用powerpoint或者keynote写演示文稿,对于代码、数学公式等的支持一直是个痛点。而且对于前端同学来说,一身的css功力用不上也是个痛点。...将reveal.js运行起来 首先clone一份reveal.js最新的代码: git clone https://github.com/hakimel/reveal.js 我们照抄一份index.html...所以我们要做的就是在下面的模板上写markdown就好。...^{(i)}|$ 出来的效果是这样的: 代码高亮 代码高亮默认是支持的,我们可以在markdown里面用`...更进一步 除了上面介绍的基本特性之外,reveal.js支持自动播放、自制插件、支持处理事件等等有利于开发人员写slides的特性。相信能给你的slides带来新的好玩的东西,将汇报与分享变成乐趣。

    9.5K20
    领券