2016-11-20 41 views
0

我有這個JS代碼,只要點擊就滾動到div。但它顯示頂部的DIV。這會產生一個問題,因爲我有一個固定的頭部,高度爲90px,div落後; DIV的標題是隱藏的。當滾動到頂部功能時添加最小高度

我想修改此代碼,以便DIV不滾動到最頂端,但留下一定的高度說90px。見截圖,並注意它是如何隱藏在固定頭後面:enter image description here

這是Jasvascript:

this.scrollTo = function(eID) { 

     // This scrolling function 
     // is from http://www.itnewb.com/tutorial/Creating-the-Smooth-Scroll-Effect-with-JavaScript 

     var startY = currentYPosition(); 
     var stopY = elmYPosition(eID); 
     var distance = stopY > startY ? stopY - startY : startY - stopY; 
     if (distance < 100) { 
      scrollTo(0, stopY); return; 
     } 
     var speed = Math.round(distance/100); 
     if (speed >= 20) speed = 20; 
     var step = Math.round(distance/25); 
     var leapY = stopY > startY ? startY + step : startY - step; 
     var timer = 0; 
     if (stopY > startY) { 
      for (var i=startY; i<stopY; i+=step) { 
       setTimeout("window.scrollTo(0, "+leapY+")", timer * speed); 
       leapY += step; if (leapY > stopY) leapY = stopY; timer++; 
      } return; 
     } 
     for (var i=startY; i>stopY; i-=step) { 
      setTimeout("window.scrollTo(0, "+leapY+")", timer * speed); 
      leapY -= step; if (leapY < stopY) leapY = stopY; timer++; 
     } 

     function currentYPosition() { 
      // Firefox, Chrome, Opera, Safari 
      if (self.pageYOffset) return self.pageYOffset; 
      // Internet Explorer 6 - standards mode 
      if (document.documentElement && document.documentElement.scrollTop) 
       return document.documentElement.scrollTop; 
      // Internet Explorer 6, 7 and 8 
      if (document.body.scrollTop) return document.body.scrollTop; 
      return 0; 
     } 

     function elmYPosition(eID) { 
      var elm = document.getElementById(eID); 
      var y = elm.offsetTop; 
      var node = elm; 
      while (node.offsetParent && node.offsetParent != document.body) { 
       node = node.offsetParent; 
       y += node.offsetTop; 
      } return y; 
     } 

    }; 
+1

嘗試添加一個'90px'保證金的'div'我頂你的CSS。 –

+0

@badjuju這不會在'div's之間產生差距嗎? – Ouroborus

+0

顯示你的HTML,我會告訴你 –

回答

1

您可以只修改代碼脫身改變這一行:

var stopY = elmYPosition(eID); 

這樣:

var stopY = elmYPosition(eID) - 90; 
+0

非常感謝。我試過這個,而是增加了90px。因此沒有工作。欣賞你的時間。 –

相關問題