这篇文章主要介绍了JavaScript下拉菜单实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
本文给大家分享一段实例代码关于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; } #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: ''; 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('pselect'), 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下拉菜单功能实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对PHP中文网的支持!
更多JavaScript下拉菜单功能相关文章请关注PHP中文网!

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

简单JavaScript函数用于检查日期是否有效。 function isValidDate(s) { var bits = s.split('/'); var d = new Date(bits[2] '/' bits[1] '/' bits[0]); return !!(d && (d.getMonth() 1) == bits[1] && d.getDate() == Number(bits[0])); } //测试 var

本文探讨如何使用 jQuery 获取和设置 DOM 元素的内边距和外边距值,特别是元素外边距和内边距的具体位置。虽然可以使用 CSS 设置元素的内边距和外边距,但获取准确的值可能会比较棘手。 // 设置 $("div.header").css("margin","10px"); $("div.header").css("padding","10px"); 你可能会认为这段代码很

本文探讨了十个特殊的jQuery选项卡和手风琴。 选项卡和手风琴之间的关键区别在于其内容面板的显示和隐藏方式。让我们深入研究这十个示例。 相关文章:10个jQuery选项卡插件

发现十个杰出的jQuery插件,以提升您的网站的活力和视觉吸引力!这个精选的收藏品提供了不同的功能,从图像动画到交互式画廊。让我们探索这些强大的工具: 相关文章: 1

HTTP-Console是一个节点模块,可为您提供用于执行HTTP命令的命令行接口。不管您是否针对Web服务器,Web Serv

本教程向您展示了如何将自定义的Google搜索API集成到您的博客或网站中,提供了比标准WordPress主题搜索功能更精致的搜索体验。 令人惊讶的是简单!您将能够将搜索限制为Y

当div内容超出容器元素区域时,以下jQuery代码片段可用于添加滚动条。 (无演示,请直接复制到Firebug中) //D = document //W = window //$ = jQuery var contentArea = $(this), wintop = contentArea.scrollTop(), docheight = $(D).height(), winheight = $(W).height(), divheight = $('#c


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver Mac版
视觉化网页开发工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。