JS 下拉菜单

HTML

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>下拉菜单</title>
 6         <link rel="stylesheet" href="css/style.css">
 7         <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
 8         <script src="js/script.js"></script>
 9     </head>
10     <body>
11         <div id="nav">
12             <ul>
13                 <li><a href="#">首页</a></li>
14                 <li><a href="#">学习 +</a>
15                     <ul>
16                         <li><a href="#">JavaScript</a></li>
17                         <li><a href="#">jQuery</a></li>
18                     </ul>
19                 </li>
20                 <li><a href="#">案例 +</a>
21                     <ul>
22                         <li><a href="#">JavaScript ></a>
23                             <ul>
24                                 <li><a href="#">下拉菜单</a></li>
25                                 <li><a href="#">图片轮播</a></li>
26                                 <li><a href="#">拖拽效果</a></li>
27                             </ul>
28                         </li>
29                         <li><a href="#">jQuery ></a>
30                             <ul>
31                                 <li><a href="#">下拉菜单</a></li>
32                                 <li><a href="#">图片轮播</a></li>
33                                 <li><a href="#">拖拽效果</a></li>
34                             </ul>
35                         </li>
36                     </ul>
37                 </li>
38                 <li><a href="#">关于</a></li>
39             </ul>
40         </div>
41     </body>
42 </html>

CSS实现三级菜单

 1 /*静态页面样式*/
 2 * {
 3     margin:0;
 4     padding:0;
 5 }
 6
 7 #nav {
 8     width: 500px;
 9     height: 50px;
10     margin: 50px auto;
11     background-color: #ccc;
12     border-radius: 10px;
13 }
14
15 ul li {
16     list-style: none;
17 }
18
19 #nav>ul>li {
20     float: left;
21 }
22
23 ul a {
24     text-decoration: none;
25     color: black;
26     display: block;
27     text-align: center;
28     height: 50px;
29     line-height: 50px;
30     width: 125px;
31     background-color: #ccc;
32     border-radius: 10px;
33 }
34
35
36 ul a:hover {
37     color: white;
38     background-color: black;
39     border-radius: 10px;
40 }
41
42 ul ul {
43     position: absolute;
44     display: none;
45 }
46
47 ul ul ul {
48     position: absolute;
49     margin-left: 125px;
50     margin-top: -50px;
51     display: none;
52 }
53
54
55 /*CSS显示下拉菜单*/
56 ul li:hover>ul {
57     display: block;
58 }

JS实现三级菜单

 1 window.onload = showMenu;
 2
 3 function showMenu() {
 4     var nav = document.getElementById("nav");
 5     var list = nav. getElementsByTagName("li");
 6
 7     for (var i = 0, l = list.length; i < l; i++) {
 8         list[i].onmouseover = function() {
 9             var sub_menu = this.getElementsByTagName("ul")[0];
10             if(sub_menu) {
11                 sub_menu.style.display = "block";
12             }
13         }
14         list[i].onmouseout = function() {
15             var sub_menu = this.getElementsByTagName("ul")[0];
16             if(sub_menu) {
17                 sub_menu.style.display = "none";
18             }
19         }
20     }
21 }

jQuery实现三级菜单

1 $(document).ready(function() {
2     $("#nav").find("li").mouseover(function() {
3         $(this).children("ul").show();
4     });
5     $("#nav").find("li").mouseout(function() {
6         $(this).children("ul").hide();
7     });
8 })

show()和hide()不能传入参数,传入参数就有bug,原因未知。。。

而且也不支持slide和fade。。。

JS实现动画菜单

 1 window.onload = showMenu;
 2
 3 function showMenu() {
 4     var nav = document.getElementById("nav");
 5     var list = nav.getElementsByTagName("li");
 6
 7     for (var i = 0, l = list.length; i < l; i++) {
 8         list[i].onmouseover = function() {
 9             var sub_menu = this.getElementsByTagName("ul")[0];
10             if(sub_menu) {
11                 sub_menu.style.display = "block";
12                 var addH = function() {
13                     var h = sub_menu.offsetHeight;
14                     h += 5;
15                     if(h >= 100) {
16                         sub_menu.style.height = 100 + "px";
17                     } else {
18                         sub_menu.style.height = h + "px";
19                     }
20                 };
21                 setInterval(addH, 50);
22             }
23         }
24
25         list[i].onmouseout = function() {
26             var sub_menu = this.getElementsByTagName("ul")[0];
27             if(sub_menu) {
28                 var subH = function() {
29                     var h = sub_menu.offsetHeight;
30                     h -= 5;
31                     if(h <= 0) {
32                         sub_menu.style.height = 0 + "px";
33                         sub_menu.style.display = "none";
34                     } else {
35                         sub_menu.style.height = h + "px";
36                     }
37                 };
38                 setInterval(subH, 50);
39             }
40         }
41     }
42 }

可以正常显示菜单,但是无法隐藏菜单。。。

只能显示二级菜单,三级菜单被吃了?!

随着鼠标不停地滑过,显示菜单的速度越来越快。。。

时间: 2024-10-23 06:31:58

JS 下拉菜单的相关文章

CSS+JS下拉菜单和纯CSS下拉菜单

一.CSS+JS下拉菜单 原理:一级菜单的li中包含二级菜单ul.在鼠标没有移上去时,二级菜单的ul是display:none的状态,鼠标一移上去变成display:block.改变这个display属性值是通过JS来实现.鼠标hover时,把整个二级菜单的ul给display出来,用到的事件onmouseonver.鼠标移出又把整个二级菜单的ul 给隐藏掉. nav-js.html文件 <!DOCTYPE html > <html> <head> <meta c

纯css+js下拉菜单实例代码

纯css+js下拉菜单实例代码 分享一个css+js下拉菜单代码,js+css实现的简单下拉菜单,兼容性不错. 例子:<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <

js下拉菜单默认值为当前年份,下拉菜单的选项为当前年份往前推5年

1:在jsp或者HTML页面中新建一个下拉框 年度:<select id="cx_nd" name="cx_nd" style="width: 60px;"></select> 年 2:调用下面方法即可 window.onload = function(){ var sel = document.getElementById("cx_nd"); var date = new Date(); for(va

(二)js下拉菜单

默认的select标签比较难看,UI比较漂亮,如果想要实现UI上的下拉样式,好像必须用js写select,从网上拷贝而且修改了一个下拉框,为了方便以后引用所以记录下来. /* diy_select */ .diy_select{height:30px;width:90px; position: relative;font-size:14px;margin:0px;background:#fff;color:#000;float:left; cursor:pointer;} .diy_select

JS 下拉菜单联动

示例代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Conte

JavaScript下拉菜单的例子分享

css+js下拉菜单 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server&q

HTML+JS+CSS 实现下拉菜单

最近在看视频学习做一些HTML+JS+CSS的实例,第一个是实现下拉菜单. 5.7 制作的思路是:1.静态网页的制作 2.动态特效实现菜单的显示和隐藏(三种方法:css.JavaScript.jQuery) 3.浏览器的兼容问题(低版本IE可能不支持等) 在用css实现时,由于盒子模型有自己默认的margin和padding值,所以要reset. 有一点比较有疑问的实,老师在视频里说position:absolute要和left.top同时使用.这是为什么?在实现的时候,我并没有使用left和t

分别用js 和 html/css实现下拉菜单特效

在网站的制作过程,我们常常会遇到导航栏中会出现一级菜单,二级菜单这样的现象,到底如何实现呢?接下里我们用两种方法来实现: 1.用js来实现此效果: <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <style type="text/css">

用JS控制下拉菜单效果

今天,突然想复习下之前学习做导航菜单的一些知识.之后觉得下拉菜单非常好玩儿,于是自己试着用JS调出了效果.网上有众多方法,但是感觉不是很对我的胃口,我喜欢HTML/CSS/JavaScript分离着写,用户体验重要,码农审美也很重要啊,O(∩_∩)O~ 在做下拉菜单的过程中,有以下心得: 1.this是个好东西,比如在鼠标事件中,它代表此时的鼠标事件对象本身,免去去用其他方式代表改对象的麻烦: 2.getElementsByTagName或者getElementById方法获得的是一个数组,需要