2014-10-16 87 views
0

我有一個左側垂直CSS菜單,彈出右側的subnavs。CSS菜單Subnav顯示下方摺疊

我的問題是,最後一個菜單項有許多subnavs導致它們顯示在窗口的下方。

是否有任何方式與CSS或jQuery來檢測是否會發生這種情況,並相應地調整位置,使所有的子菜單項可以看到?

這裏是(你可能需要調整窗口高度),以我的例子鏈接:

<!--demo is at following link--> 

http://jsfiddle.net/otcq2ne0/

+0

你應該請考慮窗口中有多少高度,要顯示子菜單需要多少高度。如果它不合適,則需要以可以看到的方式重新定位子菜單。 – Guillermo 2014-10-16 15:26:06

+0

這篇文章可能會幫助你一點點:http://stackoverflow.com/questions/9872128/get-bottom-and-right-position-of-an-element – Guillermo 2014-10-16 15:30:41

回答

1

下面是使用更新的jQuery:http://jsfiddle.net/otcq2ne0/1/

$('body').on('mouseenter mouseover', '.vmdrop', function() { 
    var subNav = $('.vmenu-dropdown', this); 

    if (subNav.length) { 
     var pos = subNav[0].getBoundingClientRect(); 
     if (pos.bottom > window.innerHeight) { 
      var threshold = pos.top; 
      var buffer = 10; 
      var diff = window.innerHeight - (pos.bottom + buffer); 

      if (Math.abs(diff) > threshold) { 
       diff = '-' + (threshold + buffer); 
      } 

      if (Math.abs(diff) > 0) { 
       subNav.css({ top: diff + 'px' }); 
      } 
     } 
    } 
}); 
+0

太棒了!奇蹟般有效。 – 2014-10-16 15:53:24