浮動層菜單

最近做了一個通用的浮動層菜單替代函數,可以方便地把傳統的 SELECT 單選菜單替換成時尚的浮動層菜單。

 

效果演示和源碼下載請到
http://www.snowpeak.org/upload/DivMenu/DivMenu.htm

 

使用說明

即僅需把附件中的 JS 文件和 CSS 文件引用到網頁裏,如:

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

其中 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”。

功能說明

基本思路是把文檔中原有的 SELECT 菜單轉換成隱藏型的 INPUT 表單項,用 A 元素來做菜單的提示文字條和選項條,用 DIV 層做菜單,各個選項也用 A 元素來替代,點擊時把值賦給隱藏型的 INPUT 表單項。

主要功能或限制包括:

   1. 所有使用習慣遵循傳統的 SELECT 菜單。
   2. 只有單選的 SELECT 菜單會被替換,多選菜單維持不變,因爲通常多選菜單也不用浮動層菜單來替代。
   3. 支持各種 SELECT 元素的特性,如把 disabled 的或者沒有 value 的 option 作爲提示文字條;用 optgroup 分組的選項也會在新菜單中分組。並且專門針對 IE 6 中 SELECT 擋住 DIV 層的 BUG 進行了修正。
   4. 支持默認選中項。
   5. 幾乎支持普通菜單的所有功能,但是不支持額外的交互功能,如 JavaScript 實時創建的 Option 選項、聯動選項等,比如選一個城市區縣會相應變化這類的功能是不支持的。
   6. 全部樣式都用 CSS 定義,字號使用相對大小,無需改動即可適應多數網頁。
   7. 菜單位置和尺寸均設置成靈活的,可適應任意的網頁排版和佈局。做的時候考慮的是要能在替代的 A 元素中顯示時,放得下最寬的選項文字,因而沒有直接取原有 SELECT 框的寬度。因此菜單尺寸可能比原有的 SELECT 寬,使用時請注意。

 

歡迎試用,並提出意見建議,共用探討改進。

發佈了52 篇原創文章 · 獲贊 7 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章