JS实现一个动态下拉菜单栏

 

1 引言   

一段时间里,经常在网上的技术论坛中看到有朋友提问怎样用JS来实现一个动态的下拉弹出式的菜单栏,我个人觉的这种功能的实现,现在已经不是难题了,在网上搜一下,各种各样实现的方式都有,成型的代码皆是,那为什么还有这么多人再网上苦苦搜询实现的方法呢?我在读完了网上若干个实现这类功能贴子之后,终于知道原委,这些贴子只道出了代码,而没有道清实现的原理,堆砌的代码把那些初学者或是由于工作原因不得不出赶任务的人搞的一头雾水。我这里从原理的角度和简短的代码来说说这个功能的实现方式,希望给那些迷惘的人一些启发。

2 实现原理

    主要的原理是利用浮动层<DIV>的可显示与隐藏,具备相对位置的属性的特性。

3 实现关键思路

  1)确定菜单栏的菜单数,定义两个二维数组,一个用来存贮主菜单对象,另一个用来保存子菜单对象。

  2)创建菜单标题栏(MenuBar),再为每个菜单创建(Menu),MenuBar和Menu可用DIV菜单内部用TABLE进行布局。

  3)MenuBar层要增加onMouseOver、onMouseOut事件,鼠标移到MenuBar上时,判断当前哪个标签,弹出该标签对应的菜单,并隐藏其它标签的子菜单。

  4)  MenuBar和Menu可以编辑成JS对象进行调用。

4 模拟菜单的样式解释
   菜单弹出——DIV的visibility = visiable;
    菜单弹出——DIV的visibility = hidden;

以上描述如有出入,请谅解!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的JavaScript实现侧面下菜单的示例代码,多个菜单项在一: HTML代码: ``` <div class="menu"> <button class="menu-toggle">菜单</button> <ul class="menu-items"> <li><a href="#">菜单项1</a></li> <li><a href="#">菜单项2</a></li> <li><a href="#">菜单项3</a></li> </ul> </div> ``` CSS代码: ``` .menu { position: relative; width: 200px; } .menu-toggle { display: block; width: 100%; padding: 10px; background-color: #eee; border: none; text-align: left; cursor: pointer; } .menu-items { position: absolute; top: 0; left: 100%; z-index: 1; display: none; background-color: #fff; border: 1px solid #999; list-style: none; margin: 0; padding: 0; } .menu-items li { margin: 0; padding: 0; } .menu-items li a { display: block; padding: 10px; text-decoration: none; color: #333; } .menu-items li a:hover { background-color: #f5f5f5; } ``` JavaScript代码: ``` var menuToggle = document.querySelector('.menu-toggle'); var menuItems = document.querySelector('.menu-items'); menuToggle.addEventListener('click', function() { if (menuItems.style.display === 'block') { menuItems.style.display = 'none'; } else { menuItems.style.display = 'block'; } }); document.addEventListener('click', function(event) { if (!menuToggle.contains(event.target) && !menuItems.contains(event.target)) { menuItems.style.display = 'none'; } }); ``` 以上代码实现了一个简单的侧面下菜单效果,点击菜单按钮可以展开或者隐藏菜单项,点击菜单以外的区域也可以隐藏菜单项。您可以根据自己的需求进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值