Home >Web Front-end >JS Tutorial >JavaScript drop-down menu function

JavaScript drop-down menu function

高洛峰
高洛峰Original
2017-03-01 16:10:191452browse

This article mainly introduces the JavaScript drop-down menu example code, which is very good and has reference value. Friends who need it can refer to it

This article will share with you a piece of example code about the js implementation of the drop-down menu function, specifically The code is as follows:

<!doctype html> 
<html lang="en"> 
  <head> 
    <meta charset="UTF-8"> 
    <title>下拉菜单</title> 
    <style type="text/css"> 
      body, 
      ul, 
      li { 
        margin: 0; 
        padding: 0; 
        font-size: 13px; 
      } 
      ul, 
      li { 
        list-style: none; 
      } 
      #pselect { 
        width: 186px; 
        margin: 80px auto; 
        position: relative; 
        z-index: 10000; 
      } 
      #pselect cite { 
        width: 150px; 
        height: 24px; 
        line-height: 24px; 
        display: block; 
        color: #807a62; 
        cursor: pointer; 
        font-style: normal; 
        padding-left: 4px; 
        padding-right: 30px; 
        border: 1px solid #333333; 
        /*background: url(xjt.png) no-repeat right center;*/ 
      } 
      cite:before { 
        content: &#39;&#39;; 
        position: absolute; 
        right: 7px; 
        bottom: 7px; 
        width: 0; 
        height: 0; 
        border-width: 4px; 
        border-style: solid; 
        border-color: #888 transparent transparent transparent; 
        transition: all 0.2s; 
        -webkit-transition: all 0.2s; 
        -moz-transition: all 0.2s; 
        -o-transition: all 0.2s; 
        -ms-transition: all 0.2s; 
        transform-origin: 50% 25%; 
        -ms-transform-origin: 50% 25%; 
        -moz-transform-origin: 50% 25%; 
        -webkit-transform-origin: 50% 25%; 
        -o-transform-origin: 50% 25%; 
      } 
      .extended cite:before { 
        transform: rotate(180deg); 
        -webkit-transform: rotate(180deg); 
        -moz-transform: rotate(180deg); 
        -o-transform: rotate(180deg); 
        -ms-transform: rotate(180deg); 
      } 
      #pselect ul { 
        width: 184px; 
        border: 1px solid #333333; 
        background-color: #ffffff; 
        position: absolute; 
        z-index: 20000; 
        margin-top: -1px; 
        display: none; 
      } 
      #pselect ul li { 
        height: 24px; 
        line-height: 24px; 
      } 
      #pselect ul li a { 
        display: block; 
        height: 24px; 
        color: #333333; 
        text-decoration: none; 
        padding-left: 10px; 
        padding-right: 10px; 
      } 
      .animated { 
        animation-fill-mode: both; 
        -webkit-animation-fill-mode: both; 
        -moz-animation-fill-mode: both; 
        -o-animation-fill-mode: both; 
        -ms-animation-fill-mode: both; 
      } 
      .speed_fast { 
        animation-duration: .3s; 
        /*-webkit-animation-duration: 0.2s; 
        -moz-animation-duration: 0.2s; 
        -o-animation-duration: 0.2s; 
        -ms-animation-duration: 0.2s;*/ 
      } 
      .anim_extendDown { 
        animation-name: extendDown; 
        -webkit-animation-name: extendDown; 
        -moz-animation-name: extendDown; 
        -o-animation-name: extendDown; 
        -ms-animation-name: extendDown; 
      } 
      @keyframes extendDown { 
        0% { 
          border-bottom-color: transparent; 
          height: 0; 
        } 
        100% { 
          border-bottom-color: #333; 
          height: 120px; 
        } 
      } 
      @-webkit-keyframes extendDown { 
        0% { 
          border-bottom-color: transparent; 
          height: 0; 
        } 
        100% { 
          border-bottom-color: #333; 
          height: 120px; 
        } 
      } 
      @-moz-keyframes extendDown { 
        0% { 
          border-bottom-color: transparent; 
          height: 0; 
        } 
        100% { 
          border-bottom-color: #333; 
          height: 120px; 
        } 
      } 
      @-o-keyframes extendDown { 
        0% { 
          border-bottom-color: transparent; 
          height: 0; 
        } 
        100% { 
          border-bottom-color: #333; 
          height: 120px; 
        } 
      } 
      @-ms-keyframes extendDown { 
        0% { 
          border-bottom-color: transparent; 
          height: 0; 
        } 
        100% { 
          border-bottom-color: #333; 
          height: 120px; 
        } 
      } 
    </style> 
  </head> 
  <body> 
    <p id="pselect"> 
      <cite>请选择分类</cite> 
      <ul> 
        <li id="li"> 
          <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" selectid="1">ASP开发</a> 
        </li> 
        <li> 
          <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" selectid="2">.NET开发</a> 
        </li> 
        <li> 
          <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" selectid="3">PHP开发</a> 
        </li> 
        <li> 
          <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" selectid="4">Javascript开发</a> 
        </li> 
        <li> 
          <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" selectid="5">Java特效</a> 
        </li> 
      </ul> 
    </p> 
    <script type="text/javascript"> 
      window.onload = function() { 
        var box = document.getElementById(&#39;pselect&#39;), 
          title = box.getElementsByTagName(&#39;cite&#39;)[0], 
          menu = box.getElementsByTagName(&#39;ul&#39;)[0], 
          as = box.getElementsByTagName(&#39;a&#39;), 
          index = -1; 
        //初始样式 
        function resetM() { 
          box.className = ""; 
          menu.className = ""; 
          menu.style.display = "none"; 
          index = -1; 
          resetA(); 
        } 
        //清空a选项样式 
        function resetA() { 
          for(var i = 0; i < as.length; i++) { 
            as[i].style.background = "#fff"; 
          } 
        } 
        // 点击三角时 
        title.onclick = function(event) { 
          //阻止事件冒泡 
          event = event || window.event; 
          event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true; 
          if(box.className == "extended") { 
            resetM(); 
          } else { 
            box.className = "extended"; //给box加类名让三角旋转 
            menu.className = "animated speed_fast anim_extendDown"; //下拉菜单的下拉动画 
            menu.style.display = "block"; 
          } 
        } 
        document.onkeydown = function(event) { 
          event = event || window.event; 
          if(box.className == "extended") { 
            if(event.keyCode == 38) { //向上键 
              event.preventDefault ? event.preventDefault() : event.returnValue = false; 
              index--; 
              if(index == -1) { 
                index = as.length - 1; 
              } 
              resetA(); 
              as[index].style.background = "#ccc"; 
            } else if(event.keyCode == 40) { //向下键 
              event.preventDefault ? event.preventDefault() : event.returnValue = false; 
              index++; 
              if(index == as.length) { 
                index = 0; 
              } 
              resetA(); 
              as[index].style.background = "#ccc"; 
            } else if(event.keyCode == 13) { //回车键 
              event.preventDefault ? event.preventDefault() : event.returnValue = false; 
              title.innerHTML = as[index].innerHTML; 
              resetM(); 
            } 
          } 
        } 
        // 滑过滑过、离开、点击每个选项时 
        for(var i = 0; i < as.length; i++) { 
          as[i].onmouseover = function() { 
            resetA(); 
            this.style.background = "#ccc"; 
            index = this.getAttribute(&#39;selectid&#39;) - 1; 
          } 
          as[i].onclick = function() { 
            resetM(); 
            title.innerHTML = this.innerHTML; 
          } 
        } 
        // 点击页面空白处时 
        document.onclick = function() { 
          resetM(); 
        } 
      } 
    </script> 
  </body> 
</html>

1. To prevent event bubbling

2. For keyboard events, use index index

3. Add animation to elements and restore the original style by setting the class name or clearing the class name.

The above is the example code of the JavaScript drop-down menu function introduced by the editor. I hope it will be useful to you. Help, if you have any questions please leave me a message and the editor will reply to you in time. I would also like to thank you all for your support of the PHP Chinese website!

For more articles related to JavaScript drop-down menu functions, please pay attention to the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn