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


Posted in Javascript onOctober 08, 2014

首先声明:

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

效果图:

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

不废话了,贴码了

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的整体高度设定。

Javascript 相关文章推荐
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
Nov 27 Javascript
JS实现简单的Canvas画图实例
Jul 04 Javascript
使用js正则控制input标签只允许输入的值
Jul 29 Javascript
jquery中的查找parents与closest方法之间的区别
Dec 02 Javascript
JS拖拽插件实现步骤
Aug 03 Javascript
Jquery ajax基础教程
Nov 20 Javascript
Vue中的methods、watch、computed的区别
Nov 26 Javascript
javascript的delete运算符知识点总结
Nov 19 Javascript
不刷新网页就能链接新的js文件方法总结
Mar 01 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
Apr 28 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
May 30 jQuery
基于Vue中的父子传值问题解决
Jul 27 Javascript
Javascript获取当前日期的农历日期代码
Oct 08 #Javascript
javascript中通过arguments参数伪装方法重载
Oct 08 #Javascript
利用原生JavaScript获取元素样式只是获取而已
Oct 08 #Javascript
javascript学习笔记(八)正则表达式
Oct 08 #Javascript
javascript学习笔记(七)Ajax和Http状态码
Oct 08 #Javascript
javascript学习笔记(六)数据类型和JSON格式
Oct 08 #Javascript
javascript学习笔记(五)原型和原型链详解
Oct 08 #Javascript
You might like
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
Zend引擎的发展 [15]
2006/10/09 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
优化Vue中date format的性能详解
2020/01/13 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
JS正则表达式验证密码强度
2020/03/18 Javascript
JS使用for in有序获取对象数据
2020/05/19 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
深入讲解Python中面向对象编程的相关知识
2015/05/25 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
Django框架实现的分页demo示例
2019/05/25 Python
python 标准差计算的实现(std)
2019/07/29 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
python两个list[]相加的实现方法
2020/09/23 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
网络技术专业求职信
2014/05/02 职场文书
责任书格式
2015/01/29 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
医院见习总结
2015/06/24 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS
MySQ InnoDB和MyISAM存储引擎介绍
2022/04/26 MySQL
MySQL优化之慢日志查询
2022/06/10 MySQL
nginx静态资源的服务器配置方法
2022/07/07 Servers