一个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 相关文章推荐
驱动事件的addEvent.js代码
Mar 27 Javascript
JavaScript 关键字屏蔽实现函数
Aug 02 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
Dec 02 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
Oct 09 Javascript
JavaScript类属性的访问方式详解
Feb 11 Javascript
使用变量动态设置js的属性名
Oct 19 Javascript
使用Vuex解决Vue中的身份验证问题
Sep 28 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
Nov 14 jQuery
js实现无缝滚动双图切换效果
Jul 09 Javascript
小程序如何写动态标签的实现方法
Feb 05 Javascript
微信小程序纯文本实现@功能
Apr 08 Javascript
插件导致ECharts被全量引入的坑示例解析
Sep 23 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
在PHP中使用Sockets 从Usenet中获取文件
2008/01/10 PHP
功能齐全的PHP发送邮件类代码附详细说明
2008/07/10 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
layui实现左侧菜单点击右侧内容区显示
2019/07/26 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
关键字throw与throws的用法差异
2016/11/22 面试题
药物学专业学生的自我评价
2013/10/27 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
力学专业求职信
2014/07/23 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
代领报检证委托书范本
2014/10/11 职场文书
2014年新教师工作总结
2014/11/08 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
个人求职意向书
2015/05/11 职场文书
小王子读书笔记
2015/06/29 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang
Python自动化测试PO模型封装过程详解
2021/06/22 Python
Linux系统下安装PHP7.3版本
2021/06/26 PHP
Python echarts实现数据可视化实例详解
2022/03/03 Python