JavaScript实现下拉菜单的显示与隐藏
作者:闭包旅人时间:2026-10-24 16:36:37浏览:296
本文介绍如何使用JavaScript结合CSS实现下拉菜单的显示与隐藏效果。通过监听鼠标移入和移出事件,动态切换子菜单的display属性为block或none,从而完成常见的导航栏交互功能。
本文分享了一段使用JavaScript实现下拉菜单显示与隐藏功能的完整代码示例,供读者参考学习。
在实际开发中,经常需要实现如下页面交互效果:
当鼠标指针移动到指定元素上方时,展开显示下拉菜单;当鼠标指针离开该元素区域后,下拉菜单自动隐藏。
实现思路
1. 构建一个容器,内部包含上下两个部分,其中下方的子菜单部分初始状态设置为隐藏,即CSS属性display设为none; 2. 当鼠标移入容器时,触发onmouseover事件,通过JavaScript将子菜单的display属性修改为block,使子菜单可见; 3. 当鼠标移出容器时,触发onmouseout事件,通过JavaScript将子菜单的display属性重新设为none,使子菜单再次隐藏; 4. 可根据实际需求调整字体颜色、背景色等样式细节。
代码示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>操作元素-新浪下拉菜单</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
ul li {
list-style: none;
}
a {
text-decoration: none;
color: #4c4c4c;
}
a:hover {
color: #e88415;
}
.box {
width: 80px;
margin: 50px auto;
font-size: 14px;
color: #4c4c4c;
}
.weibo {
position: relative;
background-color: #fcfcfc;
}
.weibo a {
display: block;
height: 40px;
line-height: 40px;
padding-left: 20px;
}
.change {
color: #f9a74f;
background-color: #edeef0;
}
i {
position: absolute;
top: 50%;
right: 15px;
margin-top: -4px;
width: 5px;
height: 5px;
border-bottom: 1px solid orangered;
border-right: 1px solid orangered;
transform: rotate(45deg);
}
.weiboList {
display: none;
}
.weiboList li a {
display: block;
width: 80px;
height: 33px;
line-height: 33px;
padding-left: 15px;
border-bottom: 1px solid #fecc5b;
background-color: #fff;
}
.weiboList li a:hover {
background-color: #fff5da;
}
</style>
</head>
<body>
<div class="box">
<div class="weibo"><a href="#" >微博<i class="select"></i></a></div>
<ul class="weiboList">
<li><a href="#" >私信</a></li>
<li><a href="#" >评论</a></li>
<li><a href="#" >@我</a></li>
</ul>
</div>
<script>
var box = document.querySelector('.box');
var weibo = document.querySelector('.weibo');
var weiboList = document.querySelector('.weiboList');
box.onmouseover = function() {
weibo.className = 'weibo change'
weiboList.style.display = 'block';
}
box.onmouseout = function() {
weibo.className = 'weibo';
weiboList.style.display = 'none';
}
</script>
</body>
</html>
最终页面效果如下:

以上就是本文的全部内容,希望对读者有所帮助,欢迎继续支持本站。
作者最新文章
什么时候该用JS构造器:与工厂模式、字面量的选择对比
2026-11-05 16:18:22
推荐几款轻量级JS照片墙开源库及对比
2026-11-05 15:56:19
JavaScript递归写法有哪些常见陷阱及避免方法
2026-11-05 14:53:38
JS数组浅拷贝与深拷贝怎么选?场景与方法总结
2026-11-05 14:41:02
p5.js 中 setup() 和 draw() 函数的执行机制详解
2026-11-05 12:32:38
