JS 实现导航菜单中的二级下拉菜单的几种方式


Posted in Javascript onOctober 31, 2016

最近整理了, JS 实现导航菜单中的二级下拉菜单的三种方式,便于项目中应用。

 如何实现导航菜单栏中的二级下拉菜单?

我们在淘宝、搜狐等大型网站上都可以看到使用的一些二级下拉菜单,比如下面这张图片。

JS 实现导航菜单中的二级下拉菜单的几种方式

但是如何实现类似的图片呢?实际上,我们有至少三种方式来实现,下面,我附上代码供大家参考。

1.仅使用html和css

<meta charset="UTF-8">
<title>Document</title>
<style>
*{margin:0;padding: 0;list-style: none;text-decoration: none;}
#nav{width: 500px;height: 40px;background: #ccc;margin: 0 auto;}
ul{background: #aaa}
ul li{float:left; display:block; height: 40px; line-height: 40px; padding: 0 20px; position: relative;}
ul li:hover{background: #cea;}
ul li ul li{float: none;}
/*关键一:将二级菜单设置为display:none;*/
ul li ul{position: absolute;top:40px;left: 0; display: none;}
ul li ul li:hover{background: red;}
/*关键二:在划过二级菜单从属的一级菜单时,设置为display:block;*/
ul li:hover ul{display: block;}
</style>
 
 
<div id="nav">
  <ul>
    <li><a href="">首页</a></li>
    <li><a href="">汽车</a>
      <ul>
        <li><a href="#">奥迪</a> </li>
        <li><a href="#">道奇</a> </li>
      </ul>
    </li>
    <li><a href="">手机</a>
      <ul>
        <li><a href="#">小米</a> </li>
        <li><a href="#">华为</a> </li>
      </ul>
    </li>
    <li><a href="">联系我们</a></li>
  </ul>
</div>

我们可以看到,这种方法是比较好的,它保证了结构与表现的完全分离。

2.用javascript实现

<meta charset="UTF-8">
<title>Document</title>
<style>
*{margin:0;padding: 0;list-style: none;text-decoration: none;}
#nav{width: 500px;height: 40px;background: #ccc;margin: 0 auto;}
ul{background: #aaa}
ul li{float:left; display:block; height: 40px; line-height: 40px; padding: 0 20px; position: relative;}
ul li:hover{background: #cea;}
ul li ul li{float: none;}
ul li ul{position: absolute;top:40px;left: 0; display:none;}
ul li ul li:hover{background: red;}
</style>
 
 
<div id="nav">
  <ul>
    <li><a href="#">首页</a></li>
    <li onmouseover="show(this)" onmouseout="hide(this)"><a href="#">汽车</a>
  <!-- 关键一:在二级标题从属的一级标题标签内设置时间执行程序,this代表的时这个li元素 -->
      <ul>
        <li><a href="#">奥迪</a> </li>
        <li><a href="#">道奇</a> </li>
      </ul>
    </li>
    <li onmouseover="show(this)" onmouseout="hide(this)"><a href="#">手机</a>
      <ul>
        <li><a href="#">小米</a> </li>
        <li><a href="#">华为</a> </li>
      </ul>
    </li>
    <li><a href="#">联系我们</a></li>
  </ul>
</div>

使用javascript实现起来较为麻烦,且这里结构和行为没有分开(虽然可以试用dom在JavaScript中创建使得结构和行为分开,但十分繁琐),不推荐。

3.用jQuery实现

jQuery是一种javascript库,我们可以在jQuery官网上下载最新版本的库文件,其中压缩的文件是用于产品的,为压缩的文件是便于开发人员学习和调试的。下载到本机以后,需要将库文件引用到html中,由于jQuery本质上也是JavaScript,所以引用方式为:

<script src="路径名称"></script>  

用jQuery实现二级下拉菜单的代码如下:

<meta charset="UTF-8">
<title>Document</title>
<style>
*{margin:0;padding: 0;list-style: none;text-decoration: none;}
#nav{width: 500px;height: 40px;background: #ccc;margin: 0 auto;}
ul{background: #aaa}
ul li{float:left; display:block; height: 40px; line-height: 40px; padding: 0 20px; position: relative;}
ul li:hover{background: #cea;}
ul li ul li{float: none;}
ul li ul{position: absolute;top:40px;left: 0; display: none;}
ul li ul li:hover{background: red;}
</style>
 
 
<div id="nav">
  <ul>
    <li><a href="">首页</a></li>
    <li class="navmenu"><a href="">汽车</a>
      <ul>
        <li><a href="#">奥迪</a> </li>
        <li><a href="#">道奇</a> </li>
      </ul>
    </li>
    <li class="navmenu"><a href="">手机</a>
      <ul>
        <li><a href="#">小米</a> </li>
        <li><a href="#">华为</a> </li>
      </ul>
    </li>
    <li><a href="">联系我们</a></li>
  </ul>
</div>

 <!-- 关键一:引入jQuery库文件 -->

 显然,使用jQuery是非常方便的。

 JS 实现导航菜单中的二级下拉菜单的几种方式

最终的实现效果如下;

即当鼠标划过一级菜单时,会出现相应的二级菜单。

 感谢阅读,希望能帮助到大家,谢谢大家对本站支持!

Javascript 相关文章推荐
一个简单的js鼠标划过切换效果
Jun 30 Javascript
始终在屏幕中间显示Div的代码(css+js)
Mar 10 Javascript
UI Events 用户界面事件
Jun 27 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
Feb 04 Javascript
跟我学习javascript创建对象(类)的8种方法
Nov 20 Javascript
js点击文本框弹出可选择的checkbox复选框
Feb 03 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
Jun 02 Javascript
最丑的时钟效果!js canvas时钟制作方法
Aug 15 Javascript
详解Chai.js断言库API中文文档
Jan 31 Javascript
react中实现搜索结果中关键词高亮显示
Jul 31 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
Oct 25 Javascript
JavaScript Blob对象原理及用法详解
Oct 14 Javascript
JS中作用域和变量提升(hoisting)的深入理解
Oct 31 #Javascript
jsp 网站引入外部css或者js失效问题解决
Oct 31 #Javascript
js学习笔记之事件处理模型
Oct 31 #Javascript
基于JS实现checkbox全选功能实例代码
Oct 31 #Javascript
新手学习前端之js模仿淘宝主页网站
Oct 31 #Javascript
vue.js学习笔记之绑定style样式和class列表
Oct 31 #Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
Oct 31 #Javascript
You might like
php中的时间显示
2007/01/18 PHP
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
Yii2.0实现生成二维码功能实例
2017/10/24 PHP
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
Python魔术方法详解
2015/02/14 Python
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
Python I/O与进程的详细讲解
2019/03/08 Python
python3.7 sys模块的具体使用
2019/07/22 Python
深入了解Django中间件及其方法
2019/07/26 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
python实现超级玛丽游戏
2020/03/18 Python
Python读取yaml文件的详细教程
2020/07/21 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
德购商城:德国进口直邮商城
2017/06/13 全球购物
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
彪马日本官网:PUMA日本
2019/01/31 全球购物
临床医学大学生求职信
2013/09/28 职场文书
俄语专业毕业生推荐信
2013/10/28 职场文书
大学生工作推荐信范文
2013/12/02 职场文书
战友聚会邀请函
2014/01/18 职场文书
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
三方协议书范本
2014/04/22 职场文书
主题党日活动总结
2014/07/08 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书
学校安全管理制度
2015/08/06 职场文书
Python中的嵌套循环详情
2022/03/23 Python
正则表达式基础与常用验证表达式
2022/06/16 Javascript