js 浮动层菜单收藏


Posted in Javascript onJanuary 16, 2009

使用说明
即仅需把附件中的 JS 文件和 CSS 文件引用到网页里,如:

<script type="text/javascript" src="DivMenu.js"></script> 
<link href="DivMenu.css" rel="stylesheet" type="text/css" />

在线演示 http://img.3water.com/online/DivMenu/DivMenu.htm
下载源码打包 http://img.3water.com/online/DivMenu/DivMenu.zip
其中 DivMenu.js 是经 Javascript compressor 压缩的精简版本,供生成实际使用。DivMenu_develop.js 是带详细注释的开发版,供学习研究。使用时可以参考 DivMenu.css 文件中的注释,自行修改样式定义。
JavaScript 程序已经实现免打扰(unobtrusive),即引用此 JS 文件的 HTML 文件无需任何其它调整。但还未实现完全匿名(anonymous),意思是此程序仍然创建了全局变量和若干网页节点,已经尽量做到少增加全局变量和节点,但使用时仍请注意变量命名冲突。此程序仅增加一个全局变量“DivMenu”,增加的网页节点比较多,对应替换掉的每个 SELECT 节点增加两个节点,名字分别是 SELECT 节点的 name 值加“_a”后缀和“_div”后缀,例如原有某 SELECT 节点的名字是“menu”,则新增的两个节点名字是“menu_a”和“menu_div”。
功能说明
多选菜单不转换,多选菜单中的提示文字只能用 disabled="disabled" 来实现了。 若要选择多个,请住 Ctrl 键再选择 多选1 多选2 多选3 多选4 多选5 放一个多选菜单,用来演示多选菜单不会被替换,以及在 IE6 中浮动层可以正常显示在其它 SELECT 以上了。
以上是个实用的范例,几组经典的 SELECT 选择菜单,第一个是复杂带分组的,提示文字用 disabled="disabled" 的第一个 option 实现,后一个是简单的,提示文字用的是没有 value 属性的那个 option。实践发现 FF 可以正常处理 disabled="disabled" 或者仅 disabled 的 option,让它可以不可选的状态,而 IE 则无视任何disabled="disabled" 和 disabled,所以估计通常 IE 里的菜单想用提示文字都会用没有 value 属性或者 value=""的那个 option。可以看它的源码就是原来的 SELECT,不需要任何改动。
基本思路是把文档中原有的 SELECT 菜单转换成隐藏型的 INPUT 表单项,用 A 元素来做菜单的提示文字条和选项条,用 DIV 层做菜单,各个选项也用 A 元素来替代,点击时把值赋给隐藏型的 INPUT 表单项。
主要功能或限制包括:
所有使用习惯遵循传统的 SELECT 菜单。
只有单选的 SELECT 菜单会被替换,多选菜单维持不变,因为通常多选菜单也不用浮动层菜单来替代。
支持各种 SELECT 元素的特性,如把 disabled 的或者没有 value 的 option 作为提示文字条;用 optgroup 分组的选项也会在新菜单中分组。并且专门针对 IE 6 中 SELECT 挡住 DIV 层的 BUG 进行了修正。
支持默认选中项。
几乎支持普通菜单的所有功能,但是不支持额外的交互功能,如 JavaScript 实时创建的 Option 选项、联动选项等,比如选一个城市区县会相应变化这类的功能是不支持的。
全部样式都用 CSS 定义,字号使用相对大小,无需改动即可适应多数网页。
菜单位置和尺寸均设置成灵活的,可适应任意的网页排版和布局。做的时候考虑的是要能在替代的 A 元素中显示时,放得下最宽的选项文字,因而没有直接取原有 SELECT 框的宽度。因此菜单尺寸可能比原有的 SELECT 宽,使用时请注意。
欢迎试用,并提出意见建议,共用探讨改进。
Javascript 相关文章推荐
JQuery 操作Javascript对象和数组的工具函数小结
Jan 22 Javascript
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
Jan 13 Javascript
JQuery 常用方法和事件详细介绍
Apr 18 Javascript
JS的Document属性和方法小结
Sep 17 Javascript
js简单实现HTML标签Select联动带跳转
Oct 23 Javascript
一个JavaScript变量声明的知识点
Oct 28 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
Nov 24 Javascript
jquery 操作css样式、位置、尺寸方法汇总
Nov 28 Javascript
学习vue.js中class与style绑定
Dec 03 Javascript
Javascript中click与blur事件的顺序详析
Apr 25 Javascript
bootstrap栅格系统示例代码分享
May 22 Javascript
Axios代理配置及封装响应拦截处理方式
Apr 07 Vue.js
jquery中常用的SET和GET
Jan 13 #Javascript
JavaScript 私有成员分析
Jan 13 #Javascript
js利用Array.splice实现Array的insert/remove
Jan 13 #Javascript
JavaScript delete操作符应用实例
Jan 13 #Javascript
在网页里看flash的trace数据的js类
Jan 10 #Javascript
捕获关闭窗口的脚本
Jan 10 #Javascript
javascript 自动转到命名锚记
Jan 10 #Javascript
You might like
通过html表格发电子邮件
2006/10/09 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
详谈 Jquery Ajax异步处理Json数据.
2011/09/09 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
js仿微信公众平台打标签功能
2017/04/08 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
koa-router路由参数和前端路由的结合详解
2019/05/19 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
pytorch 预训练层的使用方法
2019/08/20 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
超市营业员岗位职责
2013/12/20 职场文书
学生思想表现的评语
2014/01/30 职场文书
退伍老兵事迹材料
2014/01/31 职场文书
继承公证书
2014/04/09 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
2015年幼儿园元旦亲子活动方案
2014/12/09 职场文书
考研经验交流会策划书
2015/11/02 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
MySQL Innodb索引机制详细介绍
2021/11/23 MySQL