js 浮動(dòng)層菜單收藏
更新時(shí)間:2009年01月16日 19:50:45 作者:
最近做了一個(gè)通用的浮動(dòng)層菜單替代函數(shù),可以方便地把傳統(tǒng)的 SELECT 單選菜單替換成時(shí)尚的浮動(dòng)層菜單。
使用說明
即僅需把附件中的 JS 文件和 CSS 文件引用到網(wǎng)頁里,如:
<script type="text/javascript" src="DivMenu.js"></script>
<link href="DivMenu.css" rel="stylesheet" type="text/css" />
在線演示 http://img.jb51.net/online/DivMenu/DivMenu.htm
下載源碼打包 http://img.jb51.net/online/DivMenu/DivMenu.zip
其中 DivMenu.js 是經(jīng) Javascript compressor 壓縮的精簡(jiǎn)版本,供生成實(shí)際使用。DivMenu_develop.js 是帶詳細(xì)注釋的開發(fā)版,供學(xué)習(xí)研究。使用時(shí)可以參考 DivMenu.css 文件中的注釋,自行修改樣式定義。
JavaScript 程序已經(jīng)實(shí)現(xiàn)免打擾(unobtrusive),即引用此 JS 文件的 HTML 文件無需任何其它調(diào)整。但還未實(shí)現(xiàn)完全匿名(anonymous),意思是此程序仍然創(chuàng)建了全局變量和若干網(wǎng)頁節(jié)點(diǎn),已經(jīng)盡量做到少增加全局變量和節(jié)點(diǎn),但使用時(shí)仍請(qǐng)注意變量命名沖突。此程序僅增加一個(gè)全局變量“DivMenu”,增加的網(wǎng)頁節(jié)點(diǎn)比較多,對(duì)應(yīng)替換掉的每個(gè) SELECT 節(jié)點(diǎn)增加兩個(gè)節(jié)點(diǎn),名字分別是 SELECT 節(jié)點(diǎn)的 name 值加“_a”后綴和“_div”后綴,例如原有某 SELECT 節(jié)點(diǎn)的名字是“menu”,則新增的兩個(gè)節(jié)點(diǎn)名字是“menu_a”和“menu_div”。
功能說明
多選菜單不轉(zhuǎn)換,多選菜單中的提示文字只能用 disabled="disabled" 來實(shí)現(xiàn)了。 若要選擇多個(gè),請(qǐng)住 Ctrl 鍵再選擇 多選1 多選2 多選3 多選4 多選5 放一個(gè)多選菜單,用來演示多選菜單不會(huì)被替換,以及在 IE6 中浮動(dòng)層可以正常顯示在其它 SELECT 以上了。
以上是個(gè)實(shí)用的范例,幾組經(jīng)典的 SELECT 選擇菜單,第一個(gè)是復(fù)雜帶分組的,提示文字用 disabled="disabled" 的第一個(gè) option 實(shí)現(xiàn),后一個(gè)是簡(jiǎn)單的,提示文字用的是沒有 value 屬性的那個(gè) option。實(shí)踐發(fā)現(xiàn) FF 可以正常處理 disabled="disabled" 或者僅 disabled 的 option,讓它可以不可選的狀態(tài),而 IE 則無視任何disabled="disabled" 和 disabled,所以估計(jì)通常 IE 里的菜單想用提示文字都會(huì)用沒有 value 屬性或者 value=""的那個(gè) option??梢钥此脑创a就是原來的 SELECT,不需要任何改動(dòng)。
基本思路是把文檔中原有的 SELECT 菜單轉(zhuǎn)換成隱藏型的 INPUT 表單項(xiàng),用 A 元素來做菜單的提示文字條和選項(xiàng)條,用 DIV 層做菜單,各個(gè)選項(xiàng)也用 A 元素來替代,點(diǎn)擊時(shí)把值賦給隱藏型的 INPUT 表單項(xiàng)。
主要功能或限制包括:
所有使用習(xí)慣遵循傳統(tǒng)的 SELECT 菜單。
只有單選的 SELECT 菜單會(huì)被替換,多選菜單維持不變,因?yàn)橥ǔ6噙x菜單也不用浮動(dòng)層菜單來替代。
支持各種 SELECT 元素的特性,如把 disabled 的或者沒有 value 的 option 作為提示文字條;用 optgroup 分組的選項(xiàng)也會(huì)在新菜單中分組。并且專門針對(duì) IE 6 中 SELECT 擋住 DIV 層的 BUG 進(jìn)行了修正。
支持默認(rèn)選中項(xiàng)。
幾乎支持普通菜單的所有功能,但是不支持額外的交互功能,如 JavaScript 實(shí)時(shí)創(chuàng)建的 Option 選項(xiàng)、聯(lián)動(dòng)選項(xiàng)等,比如選一個(gè)城市區(qū)縣會(huì)相應(yīng)變化這類的功能是不支持的。
全部樣式都用 CSS 定義,字號(hào)使用相對(duì)大小,無需改動(dòng)即可適應(yīng)多數(shù)網(wǎng)頁。
菜單位置和尺寸均設(shè)置成靈活的,可適應(yīng)任意的網(wǎng)頁排版和布局。做的時(shí)候考慮的是要能在替代的 A 元素中顯示時(shí),放得下最寬的選項(xiàng)文字,因而沒有直接取原有 SELECT 框的寬度。因此菜單尺寸可能比原有的 SELECT 寬,使用時(shí)請(qǐng)注意。
歡迎試用,并提出意見建議,共用探討改進(jìn)。
即僅需把附件中的 JS 文件和 CSS 文件引用到網(wǎng)頁里,如:
復(fù)制代碼 代碼如下:
<script type="text/javascript" src="DivMenu.js"></script>
<link href="DivMenu.css" rel="stylesheet" type="text/css" />
在線演示 http://img.jb51.net/online/DivMenu/DivMenu.htm
下載源碼打包 http://img.jb51.net/online/DivMenu/DivMenu.zip
其中 DivMenu.js 是經(jīng) Javascript compressor 壓縮的精簡(jiǎn)版本,供生成實(shí)際使用。DivMenu_develop.js 是帶詳細(xì)注釋的開發(fā)版,供學(xué)習(xí)研究。使用時(shí)可以參考 DivMenu.css 文件中的注釋,自行修改樣式定義。
JavaScript 程序已經(jīng)實(shí)現(xiàn)免打擾(unobtrusive),即引用此 JS 文件的 HTML 文件無需任何其它調(diào)整。但還未實(shí)現(xiàn)完全匿名(anonymous),意思是此程序仍然創(chuàng)建了全局變量和若干網(wǎng)頁節(jié)點(diǎn),已經(jīng)盡量做到少增加全局變量和節(jié)點(diǎn),但使用時(shí)仍請(qǐng)注意變量命名沖突。此程序僅增加一個(gè)全局變量“DivMenu”,增加的網(wǎng)頁節(jié)點(diǎn)比較多,對(duì)應(yīng)替換掉的每個(gè) SELECT 節(jié)點(diǎn)增加兩個(gè)節(jié)點(diǎn),名字分別是 SELECT 節(jié)點(diǎn)的 name 值加“_a”后綴和“_div”后綴,例如原有某 SELECT 節(jié)點(diǎn)的名字是“menu”,則新增的兩個(gè)節(jié)點(diǎn)名字是“menu_a”和“menu_div”。
功能說明
多選菜單不轉(zhuǎn)換,多選菜單中的提示文字只能用 disabled="disabled" 來實(shí)現(xiàn)了。 若要選擇多個(gè),請(qǐng)住 Ctrl 鍵再選擇 多選1 多選2 多選3 多選4 多選5 放一個(gè)多選菜單,用來演示多選菜單不會(huì)被替換,以及在 IE6 中浮動(dòng)層可以正常顯示在其它 SELECT 以上了。
以上是個(gè)實(shí)用的范例,幾組經(jīng)典的 SELECT 選擇菜單,第一個(gè)是復(fù)雜帶分組的,提示文字用 disabled="disabled" 的第一個(gè) option 實(shí)現(xiàn),后一個(gè)是簡(jiǎn)單的,提示文字用的是沒有 value 屬性的那個(gè) option。實(shí)踐發(fā)現(xiàn) FF 可以正常處理 disabled="disabled" 或者僅 disabled 的 option,讓它可以不可選的狀態(tài),而 IE 則無視任何disabled="disabled" 和 disabled,所以估計(jì)通常 IE 里的菜單想用提示文字都會(huì)用沒有 value 屬性或者 value=""的那個(gè) option??梢钥此脑创a就是原來的 SELECT,不需要任何改動(dòng)。
基本思路是把文檔中原有的 SELECT 菜單轉(zhuǎn)換成隱藏型的 INPUT 表單項(xiàng),用 A 元素來做菜單的提示文字條和選項(xiàng)條,用 DIV 層做菜單,各個(gè)選項(xiàng)也用 A 元素來替代,點(diǎn)擊時(shí)把值賦給隱藏型的 INPUT 表單項(xiàng)。
主要功能或限制包括:
所有使用習(xí)慣遵循傳統(tǒng)的 SELECT 菜單。
只有單選的 SELECT 菜單會(huì)被替換,多選菜單維持不變,因?yàn)橥ǔ6噙x菜單也不用浮動(dòng)層菜單來替代。
支持各種 SELECT 元素的特性,如把 disabled 的或者沒有 value 的 option 作為提示文字條;用 optgroup 分組的選項(xiàng)也會(huì)在新菜單中分組。并且專門針對(duì) IE 6 中 SELECT 擋住 DIV 層的 BUG 進(jìn)行了修正。
支持默認(rèn)選中項(xiàng)。
幾乎支持普通菜單的所有功能,但是不支持額外的交互功能,如 JavaScript 實(shí)時(shí)創(chuàng)建的 Option 選項(xiàng)、聯(lián)動(dòng)選項(xiàng)等,比如選一個(gè)城市區(qū)縣會(huì)相應(yīng)變化這類的功能是不支持的。
全部樣式都用 CSS 定義,字號(hào)使用相對(duì)大小,無需改動(dòng)即可適應(yīng)多數(shù)網(wǎng)頁。
菜單位置和尺寸均設(shè)置成靈活的,可適應(yīng)任意的網(wǎng)頁排版和布局。做的時(shí)候考慮的是要能在替代的 A 元素中顯示時(shí),放得下最寬的選項(xiàng)文字,因而沒有直接取原有 SELECT 框的寬度。因此菜單尺寸可能比原有的 SELECT 寬,使用時(shí)請(qǐng)注意。
歡迎試用,并提出意見建議,共用探討改進(jìn)。
相關(guān)文章
javascript 定時(shí)自動(dòng)切換的選項(xiàng)卡Tab
JavaScript配合CSS制作一個(gè)能自動(dòng) 切換的網(wǎng)頁選項(xiàng)卡,每隔一段時(shí)間,它就自動(dòng)切換選項(xiàng)卡列表和標(biāo)題,時(shí)間自設(shè).2009-10-10
javascript實(shí)現(xiàn)的又一個(gè)不錯(cuò)的滑動(dòng)導(dǎo)航效果
javascript實(shí)現(xiàn)的又一個(gè)不錯(cuò)的滑動(dòng)導(dǎo)航效果...2007-04-04
JavaScript 下拉菜單實(shí)現(xiàn)代碼
利用css+js實(shí)現(xiàn)的下拉菜單。通過getElementsByTagName獲取ul,隱藏顯示。2009-05-05
JavaScript 雙級(jí)下拉菜單實(shí)現(xiàn)代碼
JS+CSS共同結(jié)合完成的雙級(jí)下拉菜單,符合WEB標(biāo)準(zhǔn),可作為一個(gè)標(biāo)準(zhǔn)的實(shí)例來掌握。2009-12-12
javascript漸變顯示的雅虎中國(guó)選項(xiàng)卡效果代碼
javascript漸變顯示的雅虎中國(guó)選項(xiàng)卡效果代碼...2007-10-10

