JavaScript下拉菜单功能实例代码

发布时间 - 2026-01-10 23:20:38    点击率:

本文给大家分享一段实例代码关于js实现下拉菜单功能,具体代码如下所示:

<!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; 
      } 
      #divselect { 
        width: 186px; 
        margin: 80px auto; 
        position: relative; 
        z-index: 10000; 
      } 
      #divselect 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: ''; 
        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); 
      } 
      #divselect ul { 
        width: 184px; 
        border: 1px solid #333333; 
        background-color: #ffffff; 
        position: absolute; 
        z-index: 20000; 
        margin-top: -1px; 
        display: none; 
      } 
      #divselect ul li { 
        height: 24px; 
        line-height: 24px; 
      } 
      #divselect 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> 
    <div id="divselect"> 
      <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> 
    </div> 
    <script type="text/javascript"> 
      window.onload = function() { 
        var box = document.getElementById('divselect'), 
          title = box.getElementsByTagName('cite')[0], 
          menu = box.getElementsByTagName('ul')[0], 
          as = box.getElementsByTagName('a'), 
          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('selectid') - 1; 
          } 
          as[i].onclick = function() { 
            resetM(); 
            title.innerHTML = this.innerHTML; 
          } 
        } 
        // 点击页面空白处时 
        document.onclick = function() { 
          resetM(); 
        } 
      } 
    </script> 
  </body> 
</html> 

1、要阻止事件冒泡

2、键盘事件,用index索引

3、通过设置类名或清空类名的方式给元素增加动画和恢复原有样式

以上所述是小编给大家介绍的JavaScript下拉菜单功能实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# js下拉菜单  # javascript结合CSS实现苹果开关按钮特效  # JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】  # 原生JS实现导航下拉菜单效果  # js实现下拉菜单效果  # js实现省份下拉菜单效果  # JavaScript省市级联下拉菜单实例  # js实现按钮开关单机下拉菜单效果  # 给大家  # 小编  # 滑过  # 清空  # 在此  # 回车键  # 请选择  # 所示  # 所述  # 给我留言  # 感谢大家  # 疑问请  # 空白处  # 有任何  # cursor  # pointer  # block  # normal  # left  # color 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  Linux系统命令中tree命令详解  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  微信推文制作网站有哪些,怎么做微信推文,急?  如何在阿里云香港服务器快速搭建网站?  微信小程序 wx.uploadFile无法上传解决办法  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  如何快速查询域名建站关键信息?  手机软键盘弹出时影响布局的解决方法  如何撰写建站申请书?关键要点有哪些?  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  如何在IIS中新建站点并配置端口与物理路径?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  实例解析angularjs的filter过滤器  黑客如何通过漏洞一步步攻陷网站服务器?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  Laravel怎么在Blade中安全地输出原始HTML内容  进行网站优化必须要坚持的四大原则  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  高性能网站服务器配置指南:安全稳定与高效建站核心方案  如何快速搭建高效可靠的建站解决方案?  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Bootstrap CSS布局之列表  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  网站页面设计需要考虑到这些问题  开心动漫网站制作软件下载,十分开心动画为何停播?  如何在腾讯云服务器上快速搭建个人网站?  香港服务器租用每月最低只需15元?  新三国志曹操传主线渭水交兵攻略  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  济南网站建设制作公司,室内设计网站一般都有哪些功能?  html如何与html链接_实现多个HTML页面互相链接【互相】  Android实现代码画虚线边框背景效果  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  php 三元运算符实例详细介绍  英语简历制作免费网站推荐,如何将简历翻译成英文?  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  如何制作一个表白网站视频,关于勇敢表白的小标题?  怎么用AI帮你设计一套个性化的手机App图标?  如何在万网开始建站?分步指南解析  JavaScript如何操作视频_媒体API怎么控制播放  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化