一个css与js结合的下拉菜单支持主流浏览器

 首先声明:

本人虽然在web前端岗位干了好多年,但无奈岗位对技术要求不高。html,css用的比较多,JavaScript自己原创的很少,基本都是copy修改,所以自己真正动手写时,发现基础很不牢固,边学习边实践,收获很大。

效果图:

不废话了,贴码了

1、css代码

 

代码如下:

a:link{color:white;text-decoration:none;}
a:visited{color:white;text-decorative:none;}
a:hover{color:white;text-decorative:none;}
a:active{color:white;text-decorative:none;}
li{float:left;display:inline;background-color:#003366;width:120px;text-align:center;margin:2px;padding:10px 0 5px 0;position:relative;}
.limouseover{background-color:#0033ff;color:red;}
.limouseout{background-color:#003366;color:black;}
li ul{display:none;width:120px;position:absolute;left:0;top:30px;}
li ul li{margin:0px auto;border-top:1px solid #006699;}

 

2、JavaScript代码

代码如下:

<script language=javascript>
function menu(menu1){
//鼠标移入移出classname切换和子菜单隐藏、显示切换。
if (document.getElementById(menu1)){
var menu_ul=document.getElementById(menu1);
if (menu_ul.getElementsByTagName("li").length){
var menu_li=menu_ul.getElementsByTagName("li");
for (i in menu_li){
menu_li[i].onmouseover=function(){this.className="limouseover";if (this.getElementsByTagName("ul").length){this.getElementsByTagName("ul")[0].style.display="block";}}
menu_li[i].onmouseout=function(){this.className="limouseout";if (this.getElementsByTagName("ul").length){this.getElementsByTagName("ul")[0].style.display="none";}}
}
}
}
}

</script>

 

3、html代码

 

代码如下:

<ul id=menu1>
<li><a href="">首页</a></li>
<li><a href="">菜单1菜单1</a>
<ul>
<li><a href="">子菜单1子菜单1子菜单1子菜单1</a></li>
<li><a href="">子菜单2</a></li>
</ul>
</li>
<li><a href="">菜单2</a>
<ul>
<li><a href="">子菜单1子菜单1子菜单1子菜单1</a></li>
<li><a href="">子菜单2</a></li>
</ul>
</li>
</ul>

<script>var menu1=new menu("menu1");</script>

 

说明:

1、考虑到ul和li页面用的比较多,可以在css前加入#menu1,以对菜单样式进行范围限制。

2、js主要是对鼠标移入和移除事件进行了侦听,对应切换到limouseover和limouseout样式;同时对子菜单的display属性进行更改,达到显示隐藏的功能。

3、同一个页面可以重复调用,不冲突,html代码中的JavaScript代码是调用实例,前面的menu1为任意变量名,括号内的menu1为html页面中的id。

本例的缺点:

1、菜单li的mouseover、mouseout和子菜单li的样式一样,即同一个颜色和字体,没有实现单独设置。

2、由于要兼容Ie6和ie7,所以其中采用position:absolute的同时,增加了left和top属性,top要根据菜单li的整体高度设定。

时间: 2024-08-15 23:32:39

一个css与js结合的下拉菜单支持主流浏览器的相关文章

一个css与js结合的下拉菜单支持主流浏览器_javascript技巧

首先声明: 本人虽然在web前端岗位干了好多年,但无奈岗位对技术要求不高.html,css用的比较多,JavaScript自己原创的很少,基本都是copy修改,所以自己真正动手写时,发现基础很不牢固,边学习边实践,收获很大. 效果图: 不废话了,贴码了 1.css代码 复制代码 代码如下: a:link{color:white;text-decoration:none;} a:visited{color:white;text-decorative:none;} a:hover{color:whi

js+css实现超简洁的二级下拉菜单效果代码_javascript技巧

本文实例讲述了js+css实现超简洁的二级下拉菜单效果代码.分享给大家供大家参考.具体如下: 这是一个很简洁的CSS+JavaScript二级菜单,没有使用过多的修饰素材,尽量不调用外部图片,简洁大方,而且便于二级开发完善,最初是一个政府网站上的菜单. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-css-simple-2jxl-menu-style-codes/ 具体代码如下: <!DOCTYPE html PUBLIC "-//

JS模拟bootstrap下拉菜单效果实例_javascript技巧

本文实例讲述了JS模拟bootstrap下拉菜单效果.分享给大家供大家参考,具体如下: 模拟bootstrap下拉菜单 在工作中要切一个效果:点击导航栏,则出现下列菜单,但是当点击其他地方的时候,就隐藏子菜单,效果有点类似于bootstrap 的"下拉菜单" 由于bootstrap的子菜单的样式与设计不同,因此需要自己写一个类似的效果 当点击某个控件的时候,则显示出下拉菜单,但是,当点击空白的地方的时候怎么让其自动隐藏呢? 起初的想法,给body绑定一个onclick事件,当点击空白的

select-关于js中点击下拉菜单,为什么失效?

问题描述 关于js中点击下拉菜单,为什么失效? className="com.edu.dk.portal.app.polaris.common.domain.RootLawType" value="${rootLawType}">/neptune:select 创建了这样一个下拉框,在某些页面能够使用,但在某些页面又失效.请问是哪里出了点问题.

数据-在表单的table中的每一个单元格加入俩个下拉菜单,求大神指导怎么写,跪求~

问题描述 在表单的table中的每一个单元格加入俩个下拉菜单,求大神指导怎么写,跪求~ 在表单的table中的每一个单元格加入俩个下拉菜单,求大神指导怎么写?下面有初步的jsp代码.我用的是SSH框架.有一个下拉菜单的值是动态的,是别的表内的属性.怎么把一个单元格里的两个数据分别确定 <%@page contentType=""text/html; charset=UTF-8"" import=""java.util.*"&quo

网页特效/js超漂亮下拉菜单效果

提示:您可以先修改部分代码再运行 网页特效/js超漂亮下拉菜单效果 软件下载 播放软件下载 学习软件下载 游戏软件下载 提示:您可以先修改部分代码再运行

js 导航栏下拉菜单代码

提示:您可以先修改部分代码再运行 js 导航栏下拉菜单代码 Home Single Level Dropdown Dropdown one Dropdown 1.1 Dropdown 1.2 Dropdown 1.3 Dropdown 1.4 Dropdown 1.5 Dropdown 1.6 Dropdown two Dropdown 2.1 Dropdown 2.2 Dropdown 2.3 Dropdown 2.4 Dropdown 2.5 Dropdown three Dropdown

js点击下拉菜单

提示:您可以先修改部分代码再运行 js点击下拉菜单 网站链接 提示:您可以先修改部分代码再运行

下拉菜单支持输入,并根据输入内容自动定位

下拉菜单支持输入,并根据输入内容自动定位:参考:演员发表于 10/23/2001 8:58:16 AM 的文章 "罗亭的可输入下拉框的解密简化版.",在此特别感谢相关人等.本文为这个下拉框增加了一点小小的功能:输入能够定位在已有的选择框内.还有一个缺点,各位给改改:输入的时候不能够自动拉开选择框,怎么办?function getLeftPostion( theObj ){    var pos = 0;    while ( theObj != null )    {    pos +