一个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中sort()方法的用法
Nov 04 Javascript
让Firefox支持event对象实现代码
Nov 07 Javascript
javascript css styleFloat和cssFloat
Mar 15 Javascript
js获取指定日期周数以及星期几的小例子
Jun 27 Javascript
使用jQuery仿苹果官网焦点图特效
Dec 23 Javascript
angularjs学习笔记之完整的项目结构
Sep 26 Javascript
JS正则表达式比较常见用法
Jan 26 Javascript
JS获取当前页面名称的简单实例
Aug 19 Javascript
Three.js入门之hello world以及如何绘制线
Sep 25 Javascript
vue实现数据控制视图的原理解析
Jan 07 Javascript
js实现移动端吸顶效果
Jan 08 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
May 11 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
图解上海144收音机
2021/03/02 无线电
PHP中foreach()用法汇总
2015/07/02 PHP
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
如何让页面加载完成后执行js
2013/06/26 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
JavaScript Uploadify文件上传实例
2017/02/28 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
基于Vue 服务端Cookies删除的问题
2018/09/21 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
Python处理CSV与List的转换方法
2018/04/19 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
python使用多进程的实例详解
2018/09/19 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
python进行文件对比的方法
2018/12/24 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
CSS3实现时间轴效果
2016/07/11 HTML / CSS
大学生职业规划论文
2014/01/11 职场文书
委托公证书
2014/04/08 职场文书
单位法定代表人授权委托书
2014/09/20 职场文书
2014年服务员工作总结
2014/11/18 职场文书
回复函格式及范文
2015/07/14 职场文书
golang slice元素去重操作
2021/04/30 Golang
Python 用户输入和while循环的操作
2021/05/23 Python
解决Redis启动警告问题
2022/02/24 Redis