2013-07-23 72 views
0

我爲Wordpress使用Easy Smooth Scroll Plugin。Easy Smooth Scroll Plugin:如何抵消滾動?

下面是js文件的插件使用:

var ss = { 
fixAllLinks: function() { 
    var allLinks = document.getElementsByTagName('a'); 
    for (var i = 0; i < allLinks.length; i++) { 
     var lnk = allLinks[i]; 
     if ((lnk.href && lnk.href.indexOf('#') != -1) && ((lnk.pathname == location.pathname) || ('/' + lnk.pathname == location.pathname)) && (lnk.search == location.search)) { 
      ss.addEvent(lnk, 'click', ss.smoothScroll); 
     } 
    } 
}, 
smoothScroll: function(e) { 
    if (window.event) { 
     target = window.event.srcElement; 
    } else if (e) { 
     target = e.target; 
    } else return; 
    if (target.nodeName.toLowerCase() != 'a') { 
     target = target.parentNode; 
    } 
    if (target.nodeName.toLowerCase() != 'a') return; 
    anchor = target.hash.substr(1); 
    var allLinks = document.getElementsByTagName('a'); 
    var destinationLink = null; 
    for (var i = 0; i < allLinks.length; i++) { 
     var lnk = allLinks[i]; 
     if (lnk.name && (lnk.name == anchor)) { 
      destinationLink = lnk; 
      break; 
     } 
    } 
    if (!destinationLink) destinationLink = document.getElementById(anchor); 
    if (!destinationLink) return true; 
    var destx = destinationLink.offsetLeft; 
    var desty = destinationLink.offsetTop; 
    var thisNode = destinationLink; 
    while (thisNode.offsetParent && (thisNode.offsetParent != document.body)) { 
     thisNode = thisNode.offsetParent; 
     destx += thisNode.offsetLeft; 
     desty += thisNode.offsetTop; 
    } 
    clearInterval(ss.INTERVAL); 
    cypos = ss.getCurrentYPos(); 
    ss_stepsize = parseInt((desty - cypos)/ss.STEPS); 
    ss.INTERVAL = setInterval('ss.scrollWindow(' + ss_stepsize + ',' + desty + ',"' + anchor + '")', 10); 
    if (window.event) { 
     window.event.cancelBubble = true; 
     window.event.returnValue = false; 
    } 
    if (e && e.preventDefault && e.stopPropagation) { 
     e.preventDefault(); 
     e.stopPropagation(); 
    } 
}, 
scrollWindow: function(scramount, dest, anchor) { 
    wascypos = ss.getCurrentYPos(); 
    isAbove = (wascypos < dest); 
    window.scrollTo(0, wascypos + scramount); 
    iscypos = ss.getCurrentYPos(); 
    isAboveNow = (iscypos < dest); 
    if ((isAbove != isAboveNow) || (wascypos == iscypos)) { 
     window.scrollTo(0, dest); 
     clearInterval(ss.INTERVAL); 
     location.hash = anchor; 
    } 
}, 
getCurrentYPos: function() { 
    if (document.body && document.body.scrollTop) return document.body.scrollTop; 
    if (document.documentElement && document.documentElement.scrollTop) return document.documentElement.scrollTop; 
    if (window.pageYOffset) return window.pageYOffset; 
    return 0; 
}, 
addEvent: function(elm, evType, fn, useCapture) { 
    if (elm.addEventListener) { 
     elm.addEventListener(evType, fn, useCapture); 
     return true; 
    } else if (elm.attachEvent) { 
     var r = elm.attachEvent("on" + evType, fn); 
     return r; 
    } else { 
     alert("Handler could not be removed"); 
    } 
} 
} 
ss.STEPS = 25; 
ss.addEvent(window, "load", ss.fixAllLinks); 

活頁是在這裏:http://iamjoepro.com/album/promaha/

我有平滑滾動滾動到錨,但我想,以抵消其由我的固定標題的高度(120px)

我不是javascript專家,我希望這對某人很容易,但是我無法解密在我的.js文件中添加偏移量的位置?

回答

0

我有一個類似的問題,發現下面的解決方案爲我工作。

更改的行:

var desty = destinationLink.offsetTop; 

改爲:

var desty = destinationLink.offsetTop - 120; 

(其中, '120' 是包括在固定頭的像素高度)

然後,刪除行:

location.hash = anchor; 

(otherwi se,頁面將滾動到您的120px偏移量,但然後返回到錨的位置)

希望這有助於!