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怎么控制播放
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化

