欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于JavaScript實(shí)現(xiàn)多級(jí)菜單效果

 更新時(shí)間:2017年07月25日 09:30:26   作者:diasa  
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)多級(jí)菜單效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • BootStrap daterangepicker 雙日歷控件

    BootStrap daterangepicker 雙日歷控件

    這篇文章主要介紹了BootStrap daterangepicker 雙日歷控件,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-06-06
  • js數(shù)字舍入誤差以及解決方法(必看篇)

    js數(shù)字舍入誤差以及解決方法(必看篇)

    下面小編就為大家?guī)?lái)一篇js數(shù)字舍入誤差以及解決方法(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • JS實(shí)現(xiàn)動(dòng)態(tài)添加DOM節(jié)點(diǎn)和事件的方法示例

    JS實(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-04
  • javaScript 動(dòng)態(tài)訪問(wèn)JSon元素示例代碼

    javaScript 動(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ō)明

    簡(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-11
  • Linux下編譯安裝php libevent擴(kuò)展實(shí)例

    Linux下編譯安裝php libevent擴(kuò)展實(shí)例

    這篇文章主要介紹了Linux下編譯安裝php libevent擴(kuò)展實(shí)例,本文著重講解了編譯過(guò)程中一個(gè)錯(cuò)誤解決方法,需要的朋友可以參考下
    2015-02-02
  • TypeScript實(shí)現(xiàn)數(shù)組和樹的相互轉(zhuǎn)換

    TypeScript實(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
  • JavaScript嚴(yán)格模式詳解

    JavaScript嚴(yán)格模式詳解

    本文主要介紹了JavaScript嚴(yán)格模式的相關(guān)知識(shí)。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • 詳解vscode中console.log的兩種快速寫法

    詳解vscode中console.log的兩種快速寫法

    這篇文章主要介紹了vscode中console.log的兩種快速寫法,每種方法通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • 原生js canvas實(shí)現(xiàn)鼠標(biāo)跟隨效果

    原生js canvas實(shí)現(xiàn)鼠標(biāo)跟隨效果

    這篇文章主要為大家詳細(xì)介紹了原生js canvas實(shí)現(xiàn)鼠標(biāo)跟隨效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08

最新評(píng)論