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> 

作者最新文章