2014-05-07 49 views
2

我正在一個頁面的網站上工作(我使用jQuery的一頁導航插件由特拉沃戴維斯http://github.com/davist11/jQuery-One-Page-Nav),我有一個固定的菜單左側和一些滾動內容在右側。jQuery一頁導航插件溢出隱藏的問題

不幸的是,我的主要內容div的高度是固定的,然後我使用溢出隱藏屬性來隱藏超出div的內容,但溢出隱藏插件無法正常工作,內容不再滾動。

我該如何解決問題?

請參閱下面的當前代碼:

這是插件代碼:

;(function($, window, document, undefined){ 

// our plugin constructor 
var OnePageNav = function(elem, options){ 
    this.elem = elem; 
    this.$elem = $(elem); 
    this.options = options; 
    this.metadata = this.$elem.data('plugin-options'); 
    this.$win = $(window); 
    this.sections = {}; 
    this.didScroll = false; 
    this.$doc = $(document); 
    this.docHeight = this.$doc.height(); 
}; 

// the plugin prototype 
OnePageNav.prototype = { 
    defaults: { 
     navItems: 'a', 
     currentClass: 'active', 
     changeHash: false, 
     easing: 'swing', 
     filter: '', 
     scrollSpeed: 750, 
     scrollThreshold: 0.5, 
     begin: false, 
     end: false, 
     scrollChange: false 
    }, 

    init: function() { 
     // Introduce defaults that can be extended either 
     // globally or using an object literal. 
     this.config = $.extend({}, this.defaults, this.options, this.metadata); 

     this.$nav = this.$elem.find(this.config.navItems); 

     //Filter any links out of the nav 
     if(this.config.filter !== '') { 
      this.$nav = this.$nav.filter(this.config.filter); 
     } 

     //Handle clicks on the nav 
     this.$nav.on('click.onePageNav', $.proxy(this.handleClick, this)); 

     //Get the section positions 
     this.getPositions(); 

     //Handle scroll changes 
     this.bindInterval(); 

     //Update the positions on resize too 
     this.$win.on('resize.onePageNav', $.proxy(this.getPositions, this)); 

     return this; 
    }, 

    adjustNav: function(self, $parent) { 
     self.$elem.find('.' + self.config.currentClass).removeClass(self.config.currentClass); 
     $parent.addClass(self.config.currentClass); 
    }, 

    bindInterval: function() { 
     var self = this; 
     var docHeight; 

     self.$win.on('scroll.onePageNav', function() { 
      self.didScroll = true; 
     }); 

     self.t = setInterval(function() { 
      docHeight = self.$doc.height(); 

      //If it was scrolled 
      if(self.didScroll) { 
       self.didScroll = false; 
       self.scrollChange(); 
      } 

      //If the document height changes 
      if(docHeight !== self.docHeight) { 
       self.docHeight = docHeight; 
       self.getPositions(); 
      } 
     }, 250); 
    }, 

    getHash: function($link) { 
     return $link.attr('href').split('#')[1]; 
    }, 

    getPositions: function() { 
     var self = this; 
     var linkHref; 
     var topPos; 
     var $target; 

     self.$nav.each(function() { 
      linkHref = self.getHash($(this)); 
      $target = $('#' + linkHref); 

      if($target.length) { 
       topPos = $target.offset().top; 
       self.sections[linkHref] = Math.round(topPos); 
      } 
     }); 
    }, 

    getSection: function(windowPos) { 
     var returnValue = null; 
     var windowHeight = Math.round(this.$win.height() * this.config.scrollThreshold); 

     for(var section in this.sections) { 
      if((this.sections[section] - windowHeight) < windowPos) { 
       returnValue = section; 
      } 
     } 

     return returnValue; 
    }, 

    handleClick: function(e) { 
     var self = this; 
     var $link = $(e.currentTarget); 
     var $parent = $link.parent(); 
     var newLoc = '#' + self.getHash($link); 

     if(!$parent.hasClass(self.config.currentClass)) { 
      //Start callback 
      if(self.config.begin) { 
       self.config.begin(); 
      } 

      //Change the highlighted nav item 
      self.adjustNav(self, $parent); 

      //Removing the auto-adjust on scroll 
      self.unbindInterval(); 

      //Scroll to the correct position 
      self.scrollTo(newLoc, function() { 
       //Do we need to change the hash? 
       if(self.config.changeHash) { 
        window.location.hash = newLoc; 
       } 

       //Add the auto-adjust on scroll back in 
       self.bindInterval(); 

       //End callback 
       if(self.config.end) { 
        self.config.end(); 
       } 
      }); 
     } 

     e.preventDefault(); 
    }, 

    scrollChange: function() { 
     var windowTop = this.$win.scrollTop(); 
     var position = this.getSection(windowTop); 
     var $parent; 

     //If the position is set 
     if(position !== null) { 
      $parent = this.$elem.find('a[href$="#' + position + '"]').parent(); 

      //If it's not already the current section 
      if(!$parent.hasClass(this.config.currentClass)) { 
       //Change the highlighted nav item 
       this.adjustNav(this, $parent); 

       //If there is a scrollChange callback 
       if(this.config.scrollChange) { 
        this.config.scrollChange($parent); 
       } 
      } 
     } 
    }, 

    scrollTo: function(target, callback) { 
     var offset = $(target).offset().top; 

     $('html, body').animate({ 
      scrollTop: offset 
     }, this.config.scrollSpeed, this.config.easing, callback); 
    }, 

    unbindInterval: function() { 
     clearInterval(this.t); 
     this.$win.unbind('scroll.onePageNav'); 
    } 
}; 

OnePageNav.defaults = OnePageNav.prototype.defaults; 

$.fn.onePageNav = function(options) { 
    return this.each(function() { 
     new OnePageNav(this, options).init(); 
    }); 
}; 

    })(jQuery, window , document); 

這是html代碼:

<div id="wrapper"> 
    <div id="container"> 
     <div id="left-col"> 
      <nav id="nav"> 
      <ul> 
       <li class="active"> 
       <a href="#project">Project</a> 
       </li> 
       <li> 
       <a href="#concept">Concept</a> 
       </li> 
       <li> 
       <a href="#clients">Clients</a> 
       </li> 
       <li> 
       <a href="#technical-specification">Technical<br>specification</a> 
       </li> 
       <li> 
       <a href="#gallery">Gallery</a> 
       </li> 
      </ul> 
     </div> 
     <div id="right-col"> 
     <section id="project"> 
     </section> 
     <section id="concept"> 
     </section> 
     <section id="project"> 
     </section> 
     <section id="clients"> 
    </section> 
    <section id="technical-specification"> 
    </section> 
     <section id="gallery"> 
    fgdgddg 
    </section> 
     </div> 
</div> 

要查看中的實際網站行動,請點擊這裏:

http://methlabtest2.altervista.org/EN/

在此先感謝。

回答

1

您添加了overflow: hidden;,它正在做它意味着做的事情(隱藏溢出並且不滾動)。

如果你想溢出滾動使用overflow: scroll; overflow-y;