一个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 相关文章推荐
js 获取时间间隔实现代码
May 12 Javascript
jQuery带箭头提示框tooltips插件集锦
Nov 17 Javascript
jquery实现一个简单的表单验证实例
Mar 30 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
Dec 16 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
Jan 13 Javascript
浅谈jquery拼接字符串效率比较高的方法
Feb 22 Javascript
基于Vue2.0的分页组件
Mar 16 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
Apr 25 Javascript
Vue 2.0学习笔记之Vue中的computed属性
Oct 16 Javascript
vue实现未登录跳转到登录页面的方法
Jul 17 Javascript
用vue 实现手机触屏滑动功能
May 28 Javascript
如何手写简易的 Vue Router
Oct 10 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获取文件大小的方法
2014/02/26 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
js 分栏效果实现代码
2009/08/29 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
jQuery超赞的评分插件(8款)
2015/08/20 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python模块restful使用方法实例
2013/12/10 Python
python登陆asp网站页面的实现代码
2015/01/14 Python
python实现查询IP地址所在地
2015/03/29 Python
Python中的两个内置模块介绍
2015/04/05 Python
python中执行shell的两种方法总结
2017/01/10 Python
python 删除非空文件夹的实例
2018/04/26 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
Selenium元素定位的30种方式(史上最全)
2020/05/11 Python
公司开业庆典主持词
2014/03/21 职场文书
日语专业求职信
2014/07/04 职场文书
员工教育培训协议书
2014/09/27 职场文书
公司承诺函范文
2015/01/21 职场文书
2019中小学生安全过暑期倡议书
2019/06/24 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL
python之django路由和视图案例教程
2021/07/26 Python
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript