基于JavaScript實現(xiàn)多級菜單效果
更新時間:2017年07月25日 09:30:26 作者:diasa
這篇文章主要為大家詳細介紹了基于JavaScript實現(xiàn)多級菜單效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了js實現(xiàn)多級菜單效果展示的具體代碼,供大家參考,具體內(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; /*漸進增強:首先設(shè)置一個純色的背景,對于不兼容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)設(shè)置一個 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" } } //使用事件委托實現(xiàn)我們的操作 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>
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
BootStrap daterangepicker 雙日歷控件
這篇文章主要介紹了BootStrap daterangepicker 雙日歷控件,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-06-06JS實現(xiàn)動態(tài)添加DOM節(jié)點和事件的方法示例
這篇文章主要介紹了JS實現(xiàn)動態(tài)添加DOM節(jié)點和事件的方法,涉及javascript事件響應及針對頁面dom元素節(jié)點與屬性的動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-04-04javaScript 動態(tài)訪問JSon元素示例代碼
訪問JSon元素的方法有很多,在搜的時候會找到很多,本文使用javascript來動態(tài)訪問json元素,感興趣的朋友可以練練手哦2013-08-08簡單實用的HTML到UBB轉(zhuǎn)換腳本工具實現(xiàn)說明
你也許是位樂于分享的技術(shù)人員,盡管你算不上什么技術(shù)高手,但是你都希望把自己所知道的通過博客與網(wǎng)友分享。為了讓更多人知道你的經(jīng)驗,你可能會努力把博文發(fā)布到專業(yè)論壇。2009-11-11TypeScript實現(xiàn)數(shù)組和樹的相互轉(zhuǎn)換
樹或者圖是個比較抽象的概念,并不存在這樣的數(shù)據(jù)類型。數(shù)組就比較簡單了,因此數(shù)組和樹的轉(zhuǎn)換可以理解為數(shù)組和對象之間的轉(zhuǎn)換。本文將用TypeScript實現(xiàn)數(shù)組和樹的相互轉(zhuǎn)換,感興趣的可以了解一下2022-06-06