温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么基于JavaScript实现多级菜单效果

发布时间:2021-04-13 14:20:40 来源:亿速云 阅读:244 作者:小新 栏目:web开发

这篇文章主要介绍了怎么基于JavaScript实现多级菜单效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

具体内容如下

具体代码如下:

<!DOCTYPE html> <html lang="en"> <head>   <meta charset="UTF-8">   <title>Document</title>   <style>     *{       margin:0;       padding:0;       font-size:14px;     }     ul,li{       list-style:none;     }     .box{       margin:10px;       padding:10px;       width:300px;       border:1px dashed #008000;       /*渐进增强:首先设置一个纯色的背景,对于不兼容css3的浏览器来说会使用纯色,对于兼容的浏览器,我们在下面在额外的增加一些渐变色,这样会覆盖掉上面*/       background:#ffe470;       background:-webkit-linear-gradient(top left,#2b93d2,#fa5889,#cde074,#ffe470);       background:-moz-linear-gradient(top left,#2b93d2,#fa5889,#cde074,#ffe470);       background:-o-linear-gradient(top left,#2b93d2,#fa5889,#cde074,#ffe470);       background:linear-gradient(top left,#2b93d2,#fa5889,#cde074,#ffe470);     }     .box li{       position:relative;       line-height:30px;     }     .box em{       position:absolute;       top:7px;       left:0;       width:16px;       height:16px;       background:url("img/icon.png") no-repeat -59px -28px;       cursor:pointer;     }     .box span{       display:block;       padding-left:20px;     }     .box em.open{       background-position:-42px -28px;     }     .box .two{       margin-left:20px;     }     .box .three{       margin-left:40px;     }     .box .four{       margin-left:60px;     }     .box .two,.box .three,.box .four{       display:none;     }   </style> </head> <body>   <div class='box' id='box'>     <ul>       <li>         <em></em>         <span>第一级第一个</span>         <ul class='two'>           <li><span>第二级第一个</span></li>           <li>             <em></em><span>第二级第二个</span>             <ul class='three'>               <li><span>第三极第一个</span></li>               <li><span>第三极第二个</span></li>               <li>                 <em></em><span>第三极第三个</span>                 <ul class='four'>                   <li><span>第四级第一个</span></li>                   <li><span>第四级第二个</span></li>                   <li><span>第四级第三个</span></li>                 </ul>               </li>             </ul>           </li>           <li>             <em></em><span>第二级第三个</span>             <ul class='three'>               <li><span>第三级第一个</span></li>               <li><span>第三级第二个</span></li>               <li><span>第三级第三个</span></li>             </ul>           </li>         </ul>       </li>     </ul>     <ul>       <li>         <em></em>         <span>第一级第一个</span>         <ul class='two'>           <li><span>第二级第一个</span></li>           <li>             <em></em><span>第二级第二个</span>             <ul class='three'>               <li><span>第三极第一个</span></li>               <li><span>第三极第二个</span></li>               <li>                 <em></em><span>第三极第三个</span>                 <ul class='four'>                   <li><span>第四级第一个</span></li>                   <li><span>第四级第二个</span></li>                   <li><span>第四级第三个</span></li>                 </ul>               </li>             </ul>           </li>           <li>             <em></em><span>第二级第三个</span>             <ul class='three'>               <li><span>第三级第一个</span></li>               <li><span>第三级第二个</span></li>               <li><span>第三级第三个</span></li>             </ul>           </li>         </ul>       </li>     </ul>   </div>   <script>     var box = document.getElementById('box');     //把列表中的span(前面有em的span)设置一个 cursor:pointer的样式     var spanList = box.getElementsByTagName("span");     for(var i = 0;i<spanList.length;i++){       var curSpan = spanList[i];       var curPre = utils.prev(curSpan);       if(curPre && curPre.tagName.toLowerCase()==="em"){         curSpan.style.cursor = "pointer"       }     }     //使用事件委托实现我们的操作     box.onclick = function(e){       e = e || window.event;       var tar = e.target || e.srcElement;       //只有点击的是em或者span标签,我们才进行展开收缩的操作       if(/^(em|span)$/i.test(tar.tagName)){         var parent = tar.parentNode;//获取父亲         var firstUl = utils.children(parent,"ul")[0]//获取父亲子集中的第一个ul标签         var oEm = utils.children(parent,"em")[0]         if(firstUl){           //如果隐藏让显示,否则让隐藏           var isBlock = utils.getCss(firstUl,"display") === "block" ? true : false;           if(isBlock){             firstUl.style.display = "none";             if(oEm){               utils.removeClass(oEm,"open")             }             //当外层的收起,里层所有的ul都要隐藏,所有的em都要移除open样式             var allUl = parent.getElementsByTagName("ul"),allEm = parent.getElementsByTagName("em");             for(var i = 0;i<allUl.length;i++){               allUl[i].style.display = "none";               utils.removeClass(allEm[i],"open");             }           }else{             firstUl.style.display = "block";             if(oEm){               utils.addClass(oEm,"open")             }           }         }       }     }   </script> </body> </html>

感谢你能够认真阅读完这篇文章,希望小编分享的“怎么基于JavaScript实现多级菜单效果”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

js
AI