基于JavaScript實(shí)現(xiàn)多級(jí)菜單效果
本文實(shí)例為大家分享了js實(shí)現(xiàn)多級(jí)菜單效果展示的具體代碼,供大家參考,具體內(nèi)容如下
具體代碼如下:
<!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; /*漸進(jìn)增強(qiáng):首先設(shè)置一個(gè)純色的背景,對(duì)于不兼容css3的瀏覽器來(lái)說(shuō)會(huì)使用純色,對(duì)于兼容的瀏覽器,我們?cè)谙旅嬖陬~外的增加一些漸變色,這樣會(huì)覆蓋掉上面*/ 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>第一級(jí)第一個(gè)</span> <ul class='two'> <li><span>第二級(jí)第一個(gè)</span></li> <li> <em></em><span>第二級(jí)第二個(gè)</span> <ul class='three'> <li><span>第三極第一個(gè)</span></li> <li><span>第三極第二個(gè)</span></li> <li> <em></em><span>第三極第三個(gè)</span> <ul class='four'> <li><span>第四級(jí)第一個(gè)</span></li> <li><span>第四級(jí)第二個(gè)</span></li> <li><span>第四級(jí)第三個(gè)</span></li> </ul> </li> </ul> </li> <li> <em></em><span>第二級(jí)第三個(gè)</span> <ul class='three'> <li><span>第三級(jí)第一個(gè)</span></li> <li><span>第三級(jí)第二個(gè)</span></li> <li><span>第三級(jí)第三個(gè)</span></li> </ul> </li> </ul> </li> </ul> <ul> <li> <em></em> <span>第一級(jí)第一個(gè)</span> <ul class='two'> <li><span>第二級(jí)第一個(gè)</span></li> <li> <em></em><span>第二級(jí)第二個(gè)</span> <ul class='three'> <li><span>第三極第一個(gè)</span></li> <li><span>第三極第二個(gè)</span></li> <li> <em></em><span>第三極第三個(gè)</span> <ul class='four'> <li><span>第四級(jí)第一個(gè)</span></li> <li><span>第四級(jí)第二個(gè)</span></li> <li><span>第四級(jí)第三個(gè)</span></li> </ul> </li> </ul> </li> <li> <em></em><span>第二級(jí)第三個(gè)</span> <ul class='three'> <li><span>第三級(jí)第一個(gè)</span></li> <li><span>第三級(jí)第二個(gè)</span></li> <li><span>第三級(jí)第三個(gè)</span></li> </ul> </li> </ul> </li> </ul> </div> <script> var box = document.getElementById('box'); //把列表中的span(前面有em的span)設(shè)置一個(gè) 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" } } //使用事件委托實(shí)現(xiàn)我們的操作 box.onclick = function(e){ e = e || window.event; var tar = e.target || e.srcElement; //只有點(diǎn)擊的是em或者span標(biāo)簽,我們才進(jìn)行展開收縮的操作 if(/^(em|span)$/i.test(tar.tagName)){ var parent = tar.parentNode;//獲取父親 var firstUl = utils.children(parent,"ul")[0]//獲取父親子集中的第一個(gè)ul標(biāo)簽 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") } //當(dāng)外層的收起,里層所有的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>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JS實(shí)多級(jí)聯(lián)動(dòng)下拉菜單類,簡(jiǎn)單實(shí)現(xiàn)省市區(qū)聯(lián)動(dòng)菜單!
- js左側(cè)多級(jí)菜單動(dòng)態(tài)的解決方案
- JS簡(jiǎn)單實(shí)現(xiàn)多級(jí)Select聯(lián)動(dòng)菜單效果代碼
- JavaScript多級(jí)下拉菜單代碼(簡(jiǎn)單實(shí)用)
- JS+CSS實(shí)現(xiàn)的簡(jiǎn)單折疊展開多級(jí)菜單效果
- javascript實(shí)現(xiàn)在下拉列表中顯示多級(jí)樹形菜單的方法
- JS多級(jí)連動(dòng)菜單
- js實(shí)現(xiàn)網(wǎng)頁(yè)多級(jí)級(jí)聯(lián)菜單代碼
- JS模擬的QQ面板上的多級(jí)可展開的菜單
- js模擬淘寶網(wǎng)的多級(jí)選擇菜單實(shí)現(xiàn)方法
相關(guān)文章
BootStrap daterangepicker 雙日歷控件
這篇文章主要介紹了BootStrap daterangepicker 雙日歷控件,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06JS實(shí)現(xiàn)動(dòng)態(tài)添加DOM節(jié)點(diǎn)和事件的方法示例
這篇文章主要介紹了JS實(shí)現(xiàn)動(dòng)態(tài)添加DOM節(jié)點(diǎn)和事件的方法,涉及javascript事件響應(yīng)及針對(duì)頁(yè)面dom元素節(jié)點(diǎn)與屬性的動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-04-04javaScript 動(dòng)態(tài)訪問(wèn)JSon元素示例代碼
訪問(wèn)JSon元素的方法有很多,在搜的時(shí)候會(huì)找到很多,本文使用javascript來(lái)動(dòng)態(tài)訪問(wèn)json元素,感興趣的朋友可以練練手哦2013-08-08簡(jiǎn)單實(shí)用的HTML到UBB轉(zhuǎn)換腳本工具實(shí)現(xiàn)說(shuō)明
你也許是位樂(lè)于分享的技術(shù)人員,盡管你算不上什么技術(shù)高手,但是你都希望把自己所知道的通過(guò)博客與網(wǎng)友分享。為了讓更多人知道你的經(jīng)驗(yàn),你可能會(huì)努力把博文發(fā)布到專業(yè)論壇。2009-11-11Linux下編譯安裝php libevent擴(kuò)展實(shí)例
這篇文章主要介紹了Linux下編譯安裝php libevent擴(kuò)展實(shí)例,本文著重講解了編譯過(guò)程中一個(gè)錯(cuò)誤解決方法,需要的朋友可以參考下2015-02-02TypeScript實(shí)現(xiàn)數(shù)組和樹的相互轉(zhuǎn)換
樹或者圖是個(gè)比較抽象的概念,并不存在這樣的數(shù)據(jù)類型。數(shù)組就比較簡(jiǎn)單了,因此數(shù)組和樹的轉(zhuǎn)換可以理解為數(shù)組和對(duì)象之間的轉(zhuǎn)換。本文將用TypeScript實(shí)現(xiàn)數(shù)組和樹的相互轉(zhuǎn)換,感興趣的可以了解一下2022-06-06原生js canvas實(shí)現(xiàn)鼠標(biāo)跟隨效果
這篇文章主要為大家詳細(xì)介紹了原生js canvas實(shí)現(xiàn)鼠標(biāo)跟隨效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08