一个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 获取事件对象的注意点
Jul 29 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
Jun 08 Javascript
jQuery UI 实现email输入提示实例
Aug 15 Javascript
jquery实现盒子下拉效果示例代码
Sep 12 Javascript
javascript中数组的冒泡排序使用示例
Dec 18 Javascript
用IE重起计算机或者关机的示例代码
Mar 10 Javascript
Eclipse配置Javascript开发环境图文教程
Jan 29 Javascript
纯JavaScript实现的分页插件实例
Jul 14 Javascript
JS实现弹性漂浮效果的广告代码
Sep 02 Javascript
对vue中v-if的常见使用方法详解
Sep 28 Javascript
uni-app实现获取验证码倒计时功能
Nov 01 Javascript
基于JavaScript实现省市联动效果
Jun 22 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/07/11 PHP
简述php环境搭建与配置
2016/12/05 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
可以支持多中格式的JS键盘
2007/05/02 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
javascript从作用域链谈闭包
2020/07/29 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
jQuery查找和过滤_动力节点节点Java学院整理
2017/07/04 jQuery
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
Python中的函数作用域
2018/05/07 Python
python编程使用协程并发的优缺点
2018/09/20 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
Django实现网页分页功能
2019/10/31 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
金融专业应届生求职信
2013/11/02 职场文书
自荐书模板
2013/12/19 职场文书
校园安全教育广播稿
2014/02/17 职场文书
卫校毕业生个人自我鉴定
2014/04/28 职场文书
促销活动计划书
2014/05/02 职场文书
学生上课说话检讨书
2014/10/25 职场文书
2014年党委工作总结
2014/11/22 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
运动会加油稿50字
2015/07/21 职场文书
安全教育的主题班会
2015/08/13 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang
Elasticsearch 基本查询和组合查询
2022/04/19 Python