一个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 相关文章推荐
javascript 读取图片文件的大小
Jun 25 Javascript
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
Apr 15 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
Nov 23 Javascript
Js 时间间隔计算的函数(间隔天数)
Nov 15 Javascript
一个JQuery操作Table的代码分享
Mar 30 Javascript
JavaScript面向对象之Prototypes和继承
Jul 12 Javascript
小结Node.js中非阻塞IO和事件循环
Sep 18 Javascript
jQuery中bind()方法用法实例
Jan 19 Javascript
jQuery实现的多级下拉菜单效果代码
Aug 24 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
Aug 08 jQuery
对Vue table 动态表格td可编辑的方法详解
Aug 28 Javascript
js实现转动骰子模型
Oct 24 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
PHP4之COOKIE支持详解
2006/10/09 PHP
php+mysql 实现身份验证代码
2010/03/24 PHP
WordPress中限制非管理员用户在文章后只能评论一次
2015/12/31 PHP
php获取微信openid方法总结
2019/10/10 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
2015/06/18 Javascript
深入剖析JavaScript:Object类型
2016/05/10 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
Python连接phoenix的方法示例
2017/09/29 Python
python3调用R的示例代码
2018/02/23 Python
linux安装python修改默认python版本方法
2019/03/31 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
中职应届生会计求职信
2013/10/23 职场文书
最受欢迎的自我评价
2013/12/22 职场文书
房屋所有权证明
2014/10/20 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
公司文体活动总结
2015/05/07 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
人民币使用说明书
2019/04/17 职场文书
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
2021/09/25 Java/Android
Python中的datetime包与time包包和模块详情
2022/02/28 Python