JavaScript实现鼠标悬停显示子菜单的简单示例
作者:异步漫步时间:2026-10-29 17:11:54浏览:461
本文通过HTML、CSS和JavaScript代码演示如何实现鼠标悬停时显示隐藏的子菜单。利用onmouseover和onmouseout事件监听鼠标动作,结合CSS的display属性控制子菜单的显示与隐藏,实现类似电商网站的导航效果。
实现鼠标悬停显示子菜单的交互逻辑
在淘宝、京东等电商网站中,当鼠标移入特定区域时,下方会弹出关联的选项列表。本文将演示如何通过前端技术实现这一交互效果。核心思路是结合CSS的display属性,以及JavaScript中的onmouseover和onmouseout事件。通过合理设置CSS样式并控制HTML标签结构,即可达成该功能。具体实现包含两个关键点:首先,使用列表样式(如ul/li)便于结构化管理;其次,利用<a>标签绑定事件,使鼠标悬停时能触发对子元素的响应。具体的JavaScript逻辑如下:
<script type="text/javascript">
function open1(node){
var node1=node;
var nodes=node1.getElementsByTagName("ul")[0];
with(nodes.style){
display= (display=="block")? "none" : "block";
}
}
</script>
HTML结构代码如下:
HTML结构构建
<div id="news">
<ul id="newsid1">
<li onmouseover="open1(this)"; onmouseout="open1(this)">
<!--<a href="javascript:void(0)" onmouseover="open1(this)"; onmouseout="open1(this)" >最新新闻</a> 在这里,移动第一个之后就会消失,不能够点击下面的-->
<a href="javascript:void(0)">最新新闻</a>
<ul><!--这样包装为了能更好的封装下面的内容,到时候鼠标移动上面,就能对下面的这个操作了-->
<li><a href="http://www.baidu.com">最新新闻内容摘要《机密》1</a></li>
<li><a href="http://www.baidu.com">最新新闻内容摘要《机密》2</a></li>
<li><a href="http://www.baidu.com">最新新闻内容摘要《机密》3</a></li>
<li><a href="http://www.baidu.com">最新新闻内容摘要《机密》4</a></li>
<li><a href="http://www.baidu.com">最新新闻内容摘要《机密》5</a></li>
</ul>
</li>
<li onmouseover="open1(this)"; onmouseout="open1(this)">
<a href="javascript:void(0)" onclick="">新浪新闻</a>
<ul>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》1</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》2</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》3</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》4</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》5</a></li>
</ul>
</li>
<li onmouseover="open1(this)"; onmouseout="open1(this)">
<a href="javascript:void(0)" onclick="">社会新闻</a>
<ul>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》1</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》2</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》3</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》4</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》5</a></li>
</ul>
</li>
<li onmouseover="open1(this)"; onmouseout="open1(this)">
<a href="javascript:void(0)" onclick="">最新新闻</a>
<ul>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》1</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》2</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》3</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》4</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》5</a></li>
</ul>
</li></ul></div>
除了HTML结构,CSS样式的配置同样关键,具体设置如下:
CSS样式配置
<style type="text/css">
#newsid1 {
list-style:none;
}
#newsid1 li ul{
list-style:none;
margin:0px;
padding:0px;
}
#newsid1 li{
float:left;/*让其并排显示*/
width:220px;
text-align:center;
background-color:#80ff00;
/*设置宽度,让每一列平均显示*/
}
#newsid1 li a{
color:#8080ff;
text-decoration:none;/*让超链接下面没有横线*/
text-align:center;
line-height:30px;
}
#newsid1 li a:hover{
/*a:hover移上去有反应设置的具体的颜色和背景颜色
*/
color:#400080;
background-color:#ffffff;
}
#newsid1 li ul li{
line-height:30px;
color:#ff8040;
background-color:#808000;;
}
#newsid1 li ul{
display:none;/*默认的必须全部隐藏,然后在鼠标移上去触发时间之后设置 dispaly:block;
*/
}
</style>
效果展示1:鼠标未悬停时的状态

效果展示2:鼠标悬停时的状态

完整代码示例:
完整代码示例
<!DOCTYPE html>
<html>
<head>
<!--主要目的 当鼠标滑过文字时候出现其他文字显示
采用<ul>和<li><a href="标题"><ul><li>隐藏的内容
采用大量的css模型进行修饰
传入this对象
function open1(node){
var node1=node;
var nodes=node1.getElementsByTagName("ul")[0];
with(nodes.style){
display= (display=="block")? "none" : "block";
}
}
-->
<title>Menufloat.html</title>
<style type="text/css">
#newsid1 {
list-style:none;
}
#newsid1 li ul{
list-style:none;
margin:0px;
padding:0px;
}
#newsid1 li{
float:left;/*让其并排显示*/
width:220px;
text-align:center;
background-color:#80ff00;
/*设置宽度,让每一列平均显示*/
}
#newsid1 li a{
color:#8080ff;
text-decoration:none;/*让超链接下面没有横线*/
text-align:center;
line-height:30px;
}
#newsid1 li a:hover{
/*a:hover移上去有反应设置的具体的颜色和背景颜色
*/
color:#400080;
background-color:#ffffff;
}
#newsid1 li ul li{
line-height:30px;
color:#ff8040;
background-color:#808000;;
}
#newsid1 li ul{
display:none;/*默认的必须全部隐藏,然后在鼠标移上去触发时间之后设置 dispaly:block;
*/
}
</style>
<script type="text/javascript">
function open1(node){
var node1=node;
var nodes=node1.getElementsByTagName("ul")[0];
with(nodes.style){
display= (display=="block")? "none" : "block";
}
}
</script>
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<div id="news">
<ul id="newsid1">
<li onmouseover="open1(this)"; onmouseout="open1(this)">
<!--<a href="javascript:void(0)" onmouseover="open1(this)"; onmouseout="open1(this)" >最新新闻</a> 在这里,移动第一个之后就会消失,不能够点击下面的-->
<a href="javascript:void(0)">最新新闻</a>
<ul><!--这样包装为了能更好的封装下面的内容,到时候鼠标移动上面,就能对下面的这个操作了-->
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》1</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》2</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》3</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》4</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》5</a></li>
</ul>
</li>
<li onmouseover="open1(this)"; onmouseout="open1(this)">
<a href="javascript:void(0)" onclick="">新浪新闻</a>
<ul>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》1</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》2</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》3</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》4</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》5</a></li>
</ul>
</li>
<li onmouseover="open1(this)"; onmouseout="open1(this)">
<a href="javascript:void(0)" onclick="">社会新闻</a>
<ul>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》1</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》2</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》3</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》4</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》5</a></li>
</ul>
</li>
<li onmouseover="open1(this)"; onmouseout="open1(this)">
<a href="javascript:void(0)" onclick="">最新新闻</a>
<ul>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》1</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》2</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》3</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》4</a></li>
<li><a href="https://www.jb51.net">最新新闻内容摘要《机密》5</a></li>
</ul>
</li>
</ul>
</div>
</body>
</html>
作者最新文章
D3.js 比例尺与坐标轴的配置详解
2026-11-05 16:54:46
JavaScript怎么遍历对象的Symbol键和不可枚举属性
2026-11-05 13:13:39
封装一个健壮的JS字符串判空工具函数
2026-11-05 12:16:14
JavaScript合并数组的三种常用方法:concat、扩展运算符与push
2026-11-05 11:22:29
JavaScript立即执行函数(IIFE)是什么及基本语法
2026-11-05 10:51:19
