Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 轻松平滑滚动插件:如何偏移滚动?_Javascript_Jquery_Wordpress_Smooth Scrolling - Fatal编程技术网

Javascript 轻松平滑滚动插件:如何偏移滚动?

Javascript 轻松平滑滚动插件:如何偏移滚动?,javascript,jquery,wordpress,smooth-scrolling,Javascript,Jquery,Wordpress,Smooth Scrolling,我正在使用Wordpress的Easy Smooth Scroll插件 下面是插件使用的.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 &am

我正在使用Wordpress的Easy Smooth Scroll插件

下面是插件使用的.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);
现场页面如下:

我有一个平滑的滚动到锚,但我想抵消它的高度我的固定标题120px


我不是javascript专家,我希望这对某些人来说很容易,但我无法解释在我的.js文件中添加偏移量的位置

我也有类似的问题,并发现以下解决方案对我有效

更改行:

var desty = destinationLink.offsetTop;
location.hash = anchor;
全文如下:

var desty = destinationLink.offsetTop - 120;
其中“120”是固定标题的高度(以像素为单位)

然后,删除该行:

var desty = destinationLink.offsetTop;
location.hash = anchor;
否则,页面将滚动至120px偏移量,然后返回到锚定位置

希望这有帮助