2009-11-21 34 views
3

我有一個菜單,其中包含<ul>在Web CMS中。 我希望幾個菜單項具有顯示在下拉列表中的子項目。這些子項目也是<ul>。Javascript下拉菜單部件

這基本上是很容易與CSS和JavaScript的幾行的事,但我要尋找一個現成的JavaScript的解決方案,可以幫助我處理好以下幾個:

  • 處理屏幕邊緣的情況:如果下拉菜單中的任何部分將位於當前視口之外,請將其放置在視口中。

這是一個從頭開始編碼的婊子。

「很高興有」 S是:

  • 下面的下拉按鈕,中心定位

  • 添加onclick事件使體內點擊下拉菜單之外將關閉它;事後清除onclick事件

但那些我可以自己做,如果有必要。

一個很好,小,不顯眼的小部件,神奇地轉換我的<ul>將是可愛的。

如果解決方案基於框架,它必須是Prototype,因爲這正是我在CMS中使用的。

回答

3

您可以獲取UL的偏移量,並檢查它們是否在視口的一定距離內。

// Pseudo code 
var ul = document.getElementById("menu"); 
if(ul.offset.x + ul.width > viewport.width) { 
    ul.offset.x = viewport.width - ul.width; 
} 

也有可能拿到的下拉按鈕的準確位置點擊,然後你應該以定位它下面的菜單應用基本的數學。

+0

是的,這是要走的路。然而,根據以往的經驗,我知道如果正確(考慮到可滾動容器,絕對/相對定位以及什麼),然後使其在所有瀏覽器中都能正常工作,往往會耗費大量時間。我很想解決這個問題:) –

+0

在這種情況下,一個圖書館會真的幫助,但不幸的是我無法幫助你,因爲我傾向於使用自己的圖書館。 – 2009-11-21 18:03:20

+0

我最終推出了自己的產品。 –