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循环map功能的代码
Feb 26 Javascript
javascript通过class来获取元素实现代码
Feb 20 Javascript
JavaScript正则表达式之multiline属性的应用
Jun 16 Javascript
jQuery下拉友情链接美化效果代码分享
Aug 26 Javascript
使用JQuery实现的分页插件分享
Nov 05 Javascript
webpack+vue.js实现组件化详解
Oct 12 Javascript
JavaScript队列、优先队列与循环队列
Nov 14 Javascript
Vuex之理解Store的用法
Apr 19 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
May 02 Javascript
vue-cli webpack 开发环境跨域详解
May 18 Javascript
详解小程序输入框闪烁及重影BUG解决方案
Aug 31 Javascript
使用webpack打包后的vue项目如何正确运行(express)
Oct 26 Javascript
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
APMServ使用说明
2006/10/23 PHP
WINXP下apache+php4+mysql
2006/11/25 PHP
cmd下运行php脚本
2008/11/25 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
举例讲解Python中装饰器的用法
2015/04/27 Python
python实现kMeans算法
2017/12/21 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
python中的 zip函数详解及用法举例
2020/02/16 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
长曲棍球装备:Lacrosse Monkey
2020/12/02 全球购物
国贸专业个人求职信范文
2014/01/08 职场文书
演讲稿的写法
2014/05/19 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
golang中字符串MD5生成方式总结
2021/07/04 Golang
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏