web前端开发 HTML+CSS+JAVASCRIPT 二级_三级导航菜单(参考案例)

简介: JS 二级、三级导航菜单案例

🚀 个人主页 极客小俊
✍🏻 作者简介:web开发者、设计师、技术分享博主
🐋 希望大家多多支持一下, 我们一起进步!😄
🏅 如果文章对你有帮助的话,欢迎评论 💬点赞👍🏻 收藏 📂加关注

不废话了 直接上代码:

HTML部分

<div id="menu">
    <ul id="menu_sub">
        <li class="first-list">
            <a herf=''>菜单1</a>
            <ul class="sub1">
                <li class="second-list">
                    <a herf=''>二级菜单1</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
                <li class="second-list"><a herf=''>二级菜单2</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
                <li class="second-list"><a herf=''>二级菜单3</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
                <li class="second-list"><a herf=''>二级菜单4</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
            </ul>
        </li>
        <li class="first-list">
            <a herf=''>菜单2</a>
            <ul class="sub1">
                <li class="second-list"><a herf=''>二级菜单1</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
                <li class="second-list"><a herf=''>二级菜单2</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
                <li class="second-list"><a herf=''>二级菜单3</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
                <li class="second-list"><a herf=''>二级菜单4</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
            </ul>
        </li>
        <li class="first-list">
            <a herf=''>菜单3</a>
            <ul class="sub1">
                <li class="second-list"><a herf=''>二级菜单1</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
                <li class="second-list"><a herf=''>二级菜单2</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
                <li class="second-list"><a herf=''>二级菜单3</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
                <li class="second-list"><a herf=''>二级菜单4</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
            </ul>
        </li>
        <li class="first-list">
            <a herf=''>菜单4</a>
            <ul class="sub1">
                <li class="second-list"><a herf=''>二级菜单1</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
                <li class="second-list"><a herf=''>二级菜单2</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
                <li class="second-list"><a herf=''>二级菜单3</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
                <li class="second-list"><a herf=''>二级菜单4</a>
                    <ul class="sub2">
                        <li><a herf=''>三级菜单1</a></li>
                        <li><a herf=''>三级菜单2</a></li>
                        <li><a herf=''>三级菜单3</a></li>
                        <li><a herf=''>三级菜单4</a></li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
</div>

CSS部分

 /*清除默认样式*/
        ul,li {
   
   
            padding: 0px;
            margin: 0px;
            list-style: none;
        }
        /*div样式*/
        #menu {
   
   
            border: 2px solid #ccc;
            border-right: none;
            float: left;
            margin: 100px 0 0 300px;
        }

        /*浮动li*/
        #menu ul li {
   
   
            position: relative;
        }

        /*设置a标签的样式*/
        #menu ul li a {
   
   
            width: 120px;
            height: 40px;
            text-align: center;
            line-height: 40px;
            display: block;
            border-right: 2px solid #ccc;
            background: #eee;
            color: #666;
        }

        /*当鼠标移动到 一级菜单的a标签上时*/
        #menu ul li a:hover {
   
   
            cursor: pointer;
            color: #f5576c;
            border-right: 2px solid transparent;
        }


        /*二级菜单*/
        #menu ul li .sub1{
   
   
            position: absolute;
            left: 120px;
            top: -2px;
            border-top: 2px solid #ccc;
            background: #eee;
            display: none;
            /*z-index: 3;*/
        }

        /*设置二级菜单下的a标签样式*/
        #menu ul li .sub1 li a{
   
   
            border-top: 1px dotted #ccc;
            width: 120px;
            text-align: center;
            height:39px;
            color: #666;
        }

        #menu ul li .sub1 li a:hover{
   
   
            color: #8fd3f4;
            border-right: 2px solid #ccc;
        }

        /*设置二级菜单下的第一个li下的a标签样式*/
        #menu ul li .sub1 li:first-child a{
   
   

        }
        /*设置二级菜单下的最后一个li下的a标签样式*/
        #menu ul li .sub1 li:last-child{
   
   
            border-bottom: 2px solid #ccc;
        }

        #menu ul li .sub1 li{
   
   
            position: relative;
        }

        /*显示二级菜单 暂时注销*/
      /*  #menu ul li:hover .sub1{
            display: block;
        }*/

        /*三级菜单*/
        #menu ul li .sub1 li .sub2{
   
   
            /*z-index:5;*/
            position:absolute;
            top: -2px;
            left: 120px;
            display: none;
            border-top: 2px solid #ccc;
        }
        /*显示三级菜单  暂时注销*/
        /*#menu ul li .sub1 li:hover .sub2{
            display: block;
        }*/
        /*把右边框设置回来*/
        #menu ul li .sub1 li .sub2 li a{
   
   
            border-right: 2px solid #ccc;
            height: 39px;
            width: 120px;
        }
        /*文字颜色*/
        #menu ul li .sub1 li .sub2 li a:hover{
   
   
            color: #fee140;
        }

javascript代码部分

window.onload=function(){
   
   

            var oUl=document.getElementById('menu_sub');
            var aLi=oUl.getElementsByClassName('first-list');

            for(var i=0;i<aLi.length;i++){
   
   

                aLi[i].index=i;
                aLi[i].onmouseover=function () {
   
   
                    var sub2=aLi[this.index].getElementsByTagName('ul')[0];
                    sub2.style.display='block';

                    var aLisub2=sub2.getElementsByClassName('second-list');
                    for(var j=0;j<aLisub2.length;j++){
   
   
                        aLisub2[j].index=j;
                        aLisub2[j].onmouseover=function () {
   
   
                            var sub3=aLisub2[this.index].getElementsByTagName('ul')[0];
                            sub3.style.display='block';
                        }
                    }
                }

                aLi[i].onmouseout=function () {
   
   
                    var sub2=aLi[this.index].getElementsByTagName('ul')[0];
                    sub2.style.display='none';

                    var aLisub2=sub2.getElementsByClassName('second-list');
                    for(var j=0;j<aLisub2.length;j++){
   
   
                        aLisub2[j].index=j;
                        aLisub2[j].onmouseout=function () {
   
   
                            var sub3=aLisub2[this.index].getElementsByTagName('ul')[0];
                            sub3.style.display='none';
                        }
                    }
                }
            }
        }

最后效果图 如下

1.gif

相关文章
|
3月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
6天前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
25 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
3月前
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
springboot解决js前端跨域问题,javascript跨域问题解决
|
3月前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
67 6
|
3月前
|
前端开发 JavaScript UED
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势,包括样式表优化、DOM操作减少、图像优化等技术,并分析了电商网站的具体案例,强调了技术演进对Web性能的深远影响。
58 5
|
3月前
|
编解码 前端开发 UED
探讨了CSS媒体查询在移动端开发中的应用,介绍了媒体查询的基本概念、常见条件及其在响应式布局、导航菜单、图片优化和字体调整等方面的具体应用
本文深入探讨了CSS媒体查询在移动端开发中的应用,介绍了媒体查询的基本概念、常见条件及其在响应式布局、导航菜单、图片优化和字体调整等方面的具体应用。通过实际案例分析和注意事项的讨论,旨在帮助开发者更好地理解和运用媒体查询,提升移动端用户体验。
73 4
|
3月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
87 5
|
3月前
|
缓存 前端开发 JavaScript
JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式
本文深入解析了JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式(Hash路由和History路由)、优点及挑战,并通过实际案例分析,帮助开发者更好地理解和应用这一关键技术,提升用户体验。
124 1
|
3月前
|
JavaScript 前端开发
jQuery和CSS3带变形特效的固定导航菜单
这是一款jQuery和CSS3带变形特效的固定导航菜单。该导航菜单开始时固定在页面左上角,当用户向下滚动时,导航菜单以水滴变形的方式转换为圆形菜单,然后固定在页面的左上角位置。
|
Web App开发 前端开发 JavaScript