更改“;滚动至“锚定”;偏移量-jquery

更改“;滚动至“锚定”;偏移量-jquery,jquery,anchor,offset,scrollto,Jquery,Anchor,Offset,Scrollto,是否可以更改ScrollToAnchor jQuery的偏移量 在第一个锚点处,我希望负偏移量为165px,但在此之后,我不希望有任何偏移量 我的想法类似于下面的代码,但我无法让它工作:/ 有人能帮我吗 //scroll to anchor $('a').click(function(){ if ($(this).scrollTop() > 1400) { $('html, body').animate({ scrollTop: $( $(t

是否可以更改ScrollToAnchor jQuery的偏移量

在第一个锚点处,我希望负偏移量为165px,但在此之后,我不希望有任何偏移量

我的想法类似于下面的代码,但我无法让它工作:/

有人能帮我吗

//scroll to anchor
$('a').click(function(){
    if ($(this).scrollTop() > 1400) {
        $('html, body').animate({
            scrollTop: $( $(this).attr('href') ).offset().top-165
        }, 1400);
        return false;
    } else {
        $('html, body').animate({
            scrollTop: $( $(this).attr('href') ).offset().top
        }, 1400);
        return false;
    }
});

这可能是因为您正在检查
if
语句中元素的
.scrollTop()
与实际主体的滚动位置相反。因为
$(this).scrollTop()
可能是静态的,所以if语句不会产生任何影响

因此,请尝试:

if ($('body').scrollTop() > 1400) { ..
我在JSFIDLE中创建了一个示例,它演示了如果正确定义
if
语句,它将很好地工作:


带滚动条的自定义容器解决方案:

 var anchor = $('.cust-container-with scroll').find('ul > li > span#unicId');
 var anchorPos = anchor[0].getBoundingClientRect().top;
 var viewPos = $('.cust-container-with scroll')[0].getBoundingClientRect().top;
 var scrollPos = anchorPos - viewPos;

 $('.cust-container-with scroll').animate({scrollTop: scrollPos}, 'slow');

谢谢你的信息!我在没有Jquery的情况下完成了这项工作,并且似乎在不同的浏览器(edge、firefox、chrome)上都能正常工作

这是简单的html锚定:

<a class="anchorLink" name="rsc" id="rsc"></a>

非常感谢你,这让我走上了正确的道路!但是现在我遇到了另一个问题。。当滚动超过1400px时,不再有偏移量,因此当我想再次返回到第一个锚点时,偏移量丢失。有没有办法克服这个问题?也许通过某种方式将偏移量设置为第一个锚点?@kimkrog:我不清楚你的意图。如果你看我的答案,你会发现在1400px之后,偏移量会被构造移除。您能否重新表述您的问题并构造一个示例来说明您的意思?请尝试打开您发布的JSFIDLE。第一次按“click me”(单击我)可以正常工作,但如果随后滚动到底部并再次按“click me”(单击我),它将转到锚点,但偏移量为-165px。当@kimkrog:你知道这会破坏你问题的完整初始基础时,我希望总是有偏移量?如果您不希望1400px正常工作,为什么会有一个
if
语句?您刚才描述的是以下内容:。因此,没有更多的
if
语句。这就是你想要的吗???非常感谢!编辑后的答案正是我想要的!对不起,我的问题再清楚不过了。。感谢您抽出时间帮助我:)
<a class="anchorLink" name="rsc" id="rsc"></a>
.anchorLink {
      float:left; width:100%; display:block; position:relative; margin-top:-163px;
    }