首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

鼠标经过显示离开隐藏js导航菜单

基础概念

鼠标经过显示离开隐藏的JavaScript导航菜单是一种常见的网页交互效果。它通过监听鼠标事件(如mouseentermouseleave)来实现菜单的显示和隐藏。

相关优势

  1. 用户体验提升:用户可以通过简单的鼠标操作快速访问导航菜单,提高了网站的易用性。
  2. 界面简洁:在不使用时隐藏菜单,可以使页面看起来更简洁,减少视觉干扰。
  3. 响应式设计:这种效果特别适用于移动设备和触摸屏设备,因为它们对用户的触摸操作非常敏感。

类型

  • 悬停菜单:当鼠标悬停在某个元素上时显示菜单。
  • 下拉菜单:点击某个元素后显示一个下拉菜单,鼠标离开时隐藏。
  • 侧边栏菜单:通过滑动或悬停显示侧边栏菜单。

应用场景

  • 网站导航:在网站的顶部或侧边栏使用。
  • 工具栏:在应用程序的工具栏中使用。
  • 弹出窗口:用于显示额外的信息或选项。

示例代码

以下是一个简单的JavaScript示例,展示了如何实现鼠标经过显示离开隐藏的导航菜单:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hover Menu Example</title>
    <style>
        #menu {
            display: none;
            background-color: #f1f1f1;
            padding: 10px;
            border: 1px solid #ccc;
        }
    </style>
</head>
<body>
    <div id="menuTrigger" style="width: 100px; height: 30px; background-color: #ddd;">
        Hover Me
    </div>
    <div id="menu">
        <ul>
            <li><a href="#">Home</a></li>
            <li><a href="#">About</a></li>
            <li><a href="#">Contact</a></li>
        </ul>
    </div>

    <script>
        document.getElementById('menuTrigger').addEventListener('mouseenter', function() {
            document.getElementById('menu').style.display = 'block';
        });

        document.getElementById('menuTrigger').addEventListener('mouseleave', function() {
            document.getElementById('menu').style.display = 'none';
        });
    </script>
</body>
</html>

可能遇到的问题及解决方法

问题1:菜单显示延迟或不显示

原因:可能是JavaScript代码执行顺序问题,或者CSS样式冲突。 解决方法

  • 确保JavaScript代码在DOM加载完成后执行,可以使用window.onloadDOMContentLoaded事件。
  • 检查CSS样式是否有其他规则覆盖了菜单的显示属性。

问题2:菜单闪烁

原因:鼠标快速移动时,mouseentermouseleave事件可能会频繁触发,导致菜单闪烁。 解决方法

  • 使用setTimeoutclearTimeout来延迟菜单的显示和隐藏,减少事件触发的频率。
代码语言:txt
复制
let timeout;
document.getElementById('menuTrigger').addEventListener('mouseenter', function() {
    clearTimeout(timeout);
    document.getElementById('menu').style.display = 'block';
});

document.getElementById('menuTrigger').addEventListener('mouseleave', function() {
    timeout = setTimeout(() => {
        document.getElementById('menu').style.display = 'none';
    }, 200); // 延迟200毫秒隐藏菜单
});

通过以上方法,可以有效解决鼠标经过显示离开隐藏导航菜单中常见的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JS-鼠标经过显示二级菜单

document.getElementsByTagName('li'); for(var i = 0; i < aLi.length; i++) { aLi[i].onmouseover = function() { //鼠标经过一级菜单...,二级菜单动画下拉显示出来 var sub = this.getElementsByTagName('ul')[0]; if(sub) { var This = sub...会在加完120后再执行,没想到他先执行的这个,并且弹出ullistElement,即说明他找到了subNav的ul, 问题来了,当加载完成后,请你尝试把鼠标再放到二级菜单上移动一下,你没选择一个二级菜单...,他就是把这三个alert再执行一遍,然后你就会看到ul的长度又加了20,当你不停的上下晃动鼠标,二级菜单就会不停的添加。...难道是要给ul一个id,然后通过id获得ul下的li集合,再判断谁有二级菜单进行显示   解决2:高度处,在判断那里,如果高度大于120了,我们就直接让高度等于120,不就得了,以后他再长,也会被这一条限制住

8.2K100
  • Arcgis for Js之鼠标经过显示对象名的实现

    在浏览地图时,移动鼠标经过某个对象或者POI的时候,能够提示该对象的名称对用户来说是很实用的,本文讲述在Arcgis for Js中,用两种不同的方式来实现该效果。...效果2 直观的看到了效果,下面说说在Arcgis for Js中实现的两种方式。...在实现给效果的时候,有layer的两个事件,mouse-over和mouse-out事件,鼠标经过显示对象名称,鼠标移除清除显示。...1、通过TextSymbol和GraphicMarkerSymbol实现 通过这种方式显示是直接用Arcgis的方式实现的,实现的代码如下,效果为效果2: function mouseOverLayer...mouseOutLayer(){ map.graphics.clear(); showTextLayer.clear(); map.setMapCursor("default"); } 2、直接用div显示

    3.7K20

    【CSS】鼠标移动到元素上方显示 移出盒子范围隐藏案例 ( 子绝父相 | 显示隐藏元素对象 | 鼠标经过样式设置 | 半透明遮罩设置 )

    一、鼠标移动到元素上方显示 / 移出盒子范围隐藏案例要点分析 ---- 1、子绝父相 这里要 在一个 div 盒子上方套一层遮罩 , 遮罩就需要 使用绝对定位将其覆盖到其它元素中 ; 子元素使用了 绝对定位..., 父元素必须使用 相对定位 ; 2、显示隐藏元素对象 使用 display: none; 样式 隐藏元素 , 使用 display: block; 样式 显示元素 ; 3、鼠标经过样式设置 鼠标经过...链接 时 , 显示 链接 中的 one 元素 , 需要使用如下选择器 进行设置 ; /* 鼠标经过时 one 作为遮罩 显示出来 */ .box a:hover .one { /* 设置显示元素...鼠标移动到 a 链接后显示该元素 */ .one { /* 先设置隐藏元素 */ display: none; /* 设置相对定位 可以显示在父容器任意位置 */ position...1 个 显示在正中心 */ background: rgba(0, 0, 0, .3) url(bg.png) no-repeat center center; } /* 鼠标经过时 one

    2.9K30

    能用HTMLCSS解决的问题就不要使用JS!

    导航高亮 导航高亮是一种很常见的问题,包括当前页面的导航在菜单里面高亮和hover时高亮。你可以用js控制,但是用一点CSS技巧就可以达到这个目的,不需要使用JS。...我一个纯展示的静态页面,为啥要写js呢,是吧。 注意这个hover选择器特别好用,几乎适用于所有需要用鼠标悬浮时显示的场景。 2....鼠标悬浮时显示 鼠标悬浮的场景十分常见,例如导航的菜单: 以及在《Google地图开发总结》一文提到的,marker详情框的显示: 一般要把隐藏的东西如菜单作为hover目标的子元素或者相邻元素,才方便用...li>        登出     menu在正常态下是隐藏的: .menu{    display: none; } 而当导航hover时显示: .user:hover...同时menu自已本身hover的时候也要显示,否则鼠标一离开导航的时候,菜单就消失了: .menu:hover{    display: list-item; } 这里会有一个小问题,即menu和导航需要挨着一起

    3K20

    能用HTMLCSS解决的问题就不要使用JS

    导航高亮 导航高亮是一种很常见的问题,包括当前页面的导航在菜单里面高亮和hover时高亮。你可以用js控制,但是用一点CSS技巧就可以达到这个目的,不需要使用JS。 ? ?...我一个纯展示的静态页面,为啥要写js呢,是吧。 注意这个hover选择器特别好用,几乎适用于所有需要用鼠标悬浮时显示的场景。 2. 鼠标悬浮时显示 鼠标悬浮的场景十分常见,例如导航的菜单: ?...一般要把隐藏的东西如菜单作为hover目标的子元素或者相邻元素,才方便用css控制,例如上面的菜单,是把menu当作导航的一个相邻元素: 用户显示,否则鼠标一离开导航的时候,菜单就消失了: .menu:hover{ display: list-item; } 这里会有一个小问题,即menu和导航需要挨着一起...的hover发挥了作用,所以判断为显示,然后又把它隐藏了。

    3.8K40

    能用CSS实现的就不用麻烦JavaScript

    30px; text-align:center; left:0; top:25px; border:1px solid green; } [屏幕录制2021-07-18 上午9.42.38.gif] 鼠标悬浮时显示...鼠标悬浮的场景十分常见,例如导航的菜单: [image.png] 一般要把隐藏的东西如菜单作为hover目标的子元素或者相邻元素,才方便用css控制,例如上面的菜单,是把menu当作导航的一个相邻元素...: .menu{ display: none; } 而当导航hover时显示: ```js /*使用相邻选择器和hover*/ .user:hover + .menu{ display...同时menu自已本身hover的时候也要显示,否则鼠标一离开导航的时候,菜单就消失了: .menu:hover{ display: list-item; } 这里会有一个小问题,即menu和导航需要挨着一起...的hover发挥了作用,所以判断为显示,然后又把它隐藏了。

    1.4K11

    前端成神之路-CSS高级技巧

    CSS高级技巧 目标 理解 能说出元素显示隐藏最常见的写法 能说出精灵图产生的目的 能说出去除图片底侧空白缝隙的方法 应用 能写出最常见的鼠标样式 能使用精灵图技术 能用滑动门做导航栏案例...元素的显示与隐藏 目的 让一个元素在页面中消失或者显示出来 场景 类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现!...1.1 display 显示(重点) 实际开发场景: 配合后面js做特效,比如下拉菜单,原先没有,鼠标经过,显示下拉菜单, 应用极为广泛 1.2 visibility 可见性 (了解) 1.3 overflow...属性值 描述 visible 不剪切内容也不添加滚动条 hidden 不显示超过对象尺寸的内容,超出的部分隐藏掉 scroll 不管超出内容否,总是显示滚动条 auto 超出自动显示滚动条,不超出不显示滚动条...1.4 显示与隐藏总结 属性 区别 用途 display 隐藏对象,不保留位置 配合后面js做特效,比如下拉菜单,原先没有,鼠标经过,显示下拉菜单, 应用极为广泛 visibility 隐藏对象,保留位置

    6.8K30

    CSS——06扩展:高级

    应用 能写出最常见的鼠标样式 能使用精灵图技术,这个技术比较重要 能用滑动门做导航栏案例,这个技术比较重要 1....元素的显示与隐藏 目的 让一个元素在页面中消失或者显示出来 场景 类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现!...1.1 display 显示(重点) 实际开发场景: 配合后面js做特效,比如下拉菜单,原先没有,鼠标经过,显示下拉菜单, 应用极为广泛 1.2 visibility 可见性 (了解) 1.3 overflow...属性值 描述 visible 不剪切内容也不添加滚动条 hidden 不显示超过对象尺寸的内容,超出的部分隐藏掉 scroll 不管超出内容否,总是显示滚动条 auto 超出自动显示滚动条,不超出不显示滚动条...1.4 显示与隐藏总结 属性 区别 用途 display 隐藏对象,不保留位置 配合后面js做特效,比如下拉菜单,原先没有,鼠标经过,显示下拉菜单, 应用极为广泛 visibility 隐藏对象,保留位置

    4.7K40

    WEB入门之十八 动画特效

    /隐藏动画,鼠标悬浮到按钮上时,图片在1000毫秒内显示;鼠标离开按钮时,图片慢速隐藏。...3:滑动的横向菜单 ​训练技能点​ Ø jQuery内置动画函数 ​需求说明​ 模拟实现一个如图8.2.3所示的横向菜单,当鼠标悬浮到横向菜单上时,其子菜单 淡入显示;当鼠标离开横向菜单时,其子菜单淡出隐藏...​训练技能点​ jQuery自定义动画函数 ​需求说明​ 图8.2.4和图8.2.5展示了网页侧边菜单,默认是关闭状态,当鼠标悬浮到上面时,侧边菜单就滑出来;当鼠标离开时,侧边菜单就收缩回去。...(侧边菜单是一个图片) ​实现步骤​ (1)实现图8.2.4所示的界面,侧边菜单默认隐藏 (2)使用animate函数实现侧边菜单的滑动隐藏/显示,参考代码如下所示。...​训练技能点​ jQuery内置动画函数 ​需求说明​ 图8.2.6显示的是广告图片,默认透明度偏暗,当鼠标悬浮到某个图片时,该图片变亮,离开时恢复变暗。

    7610

    WEB入门之十八 动画特效

    /隐藏动画,鼠标悬浮到按钮上时,图片在1000毫秒内显示;鼠标离开按钮时,图片慢速隐藏。...3:滑动的横向菜单 训练技能点 Ø jQuery内置动画函数 需求说明 模拟实现一个如图8.2.3所示的横向菜单,当鼠标悬浮到横向菜单上时,其子菜单 淡入显示;当鼠标离开横向菜单时,其子菜单淡出隐藏。...训练技能点 jQuery自定义动画函数 需求说明 图8.2.4和图8.2.5展示了网页侧边菜单,默认是关闭状态,当鼠标悬浮到上面时,侧边菜单就滑出来;当鼠标离开时,侧边菜单就收缩回去。...(侧边菜单是一个图片) 实现步骤 (1)实现图8.2.4所示的界面,侧边菜单默认隐藏 (2)使用animate函数实现侧边菜单的滑动隐藏/显示,参考代码如下所示。...训练技能点 jQuery内置动画函数 需求说明 图8.2.6显示的是广告图片,默认透明度偏暗,当鼠标悬浮到某个图片时,该图片变亮,离开时恢复变暗。

    15410

    Web前端知识(四)

    click 鼠标进入事件 mouseover 鼠标离开事件 mouseout 鼠标移动事件 mousemove 4.1.6. jQuery操作CSS l通过jQuery可以很方便的来操作CSS样式.直接设置...").toggle(1000);}); 【隐藏和显示以及切换动画总结】: Ø注意:在无参数的时候,只是硬性的显 示内容和隐藏内容。...4.1.9.5.jq动画综合案例 4.1.9.5.1.二级下拉菜单 【效果图】: Html和css代码: 接下来:先隐藏起来所有的二级菜单 Js代码思路: 对于上面的代码,下拉菜单基本已经实现了...4.9.5.2.折叠菜单 效果图: Html和css Js代码 4.1.9.6.淡入和淡出动画 jQuery 提供了一组专门用于透明度变化的方法: .fadeIn() 淡入 .fadeOut...click 鼠标进入事件 mouseover 鼠标离开事件 mouseout 鼠标移动事件 mousemove 浏览器窗口滚动事件 $(window).scroll(function () { } 页面卷起的部分

    7.4K30

    「jQuery」基础 - 01

    有着丰富的第三方的插件,例如:树形菜单、日期控件、轮播图等。 免费、开源。...显示隐藏 显示隐藏动画,常见有三个方法:show() / hide() / toggle() ;语法规范如下: show hide toggle 代码演示 <button...(相当于mouseenter) out:鼠标移出元素要触发的函数(相当于mouseleave) 如果只写一个函数,则鼠标经过和离开都会触发它 hover事件和停止动画排列案例 $(function()...事件切换 hover 就是鼠标经过和离开的复合写法 // $(".nav>li").hover(function() { // $(this).children("ul").slideDown...事件切换 hover 如果只写一个函数,那么鼠标经过和鼠标离开都会触发这个函数 $(".nav>li").hover(function() { // stop 方法必须写到动画的前面

    7K21

    vue博客实战---博客首页开发

    博客网站的架构如下: 1.左上方头像区域,鼠标移入会有下拉菜单进行注册登录退出等操作 2.左下方博客导航栏区域 3.中间博客正文区域 3.右侧精选文章展示以及友情链接展示 我们可以先看下具体的首页效果...我们首先实现左上方头像下拉菜单,下拉菜单我使用element-ui的el-dropdown组件,el-dropdown中包含一个class为el-dropdown-link,鼠标移入则会显示下拉菜单,我们可以将头像框放在这个...这边有一个小细节需要优化的就是登陆/注册按钮和退出按钮不能同时显示,我们首先需要在data中设置变量flag,然后在mounted的时候监听localStorage中是否有保存用户信息,如果处于登录状态则隐藏登陆...我们可以看下导航栏实现之后的具体效果: ? 到这里左侧导航栏已经成功实现了,接着我们先看看右侧精选文章推荐和友链的显示效果。...左右两侧导航栏实现完毕,接下来需要设置中间的博客主界面,实际上中间界面不是固定界面,而是由index.js中routes的components决定具体渲染哪一个vue文件作为博客主界面,在首页我们渲染的是

    6.9K20
    领券