首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery:通过锚链滑动

jQuery:通过锚链滑动
EN

Stack Overflow用户
提问于 2012-07-22 15:18:05
回答 2查看 453关注 0票数 2

我加载了这个通过anchorLinks滑动页面的jQuery-snippet。

http://www.position-absolute.com/articles/better-html-anchor-a-jquery-script-to-slide-the-scrollbar/

在我的例子中,我在页面的顶部有一个固定的块(position: fixed )。因此,我需要一个向下滑动的增量值。如果我不使用这样的delta值,页面就会滑得很深,这样我的anchorLink就会被固定的块隐藏起来。

有谁知道如何解决这个问题吗?

Thx

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-23 00:58:14

通过编辑此行,必须有一个解决方案:

代码语言:javascript
复制
 window.location.hash = elementClick

更改持续时间值有助于滑动到正确的位置。但随后窗口在滑动结束时“跳过”偏移值。

Solution:我通过删除行修复了这个问题:

代码语言:javascript
复制
 window.location.hash = elementClick
票数 0
EN

Stack Overflow用户

发布于 2012-07-22 15:22:24

原始插件:

代码语言:javascript
复制
jQuery.fn.anchorAnimate = function(settings) {

    settings = jQuery.extend({
        speed : 1100
    }, settings);   

    return this.each(function(){
        var caller = this
        $(caller).click(function (event) {  
            event.preventDefault()
            var locationHref = window.location.href
            var elementClick = $(caller).attr("href")

            var destination = $(elementClick).offset().top;
            $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, settings.speed, function() {
                window.location.hash = elementClick
            });
            return false;
        })
    })
}

修改的

代码语言:javascript
复制
jQuery.fn.anchorAnimate = function(settings) {

    settings = jQuery.extend({
        speed : 1100,
          offset: 0
    }, settings);   

    return this.each(function(){
        var caller = this
        $(caller).click(function (event) {  
            event.preventDefault()
            var locationHref = window.location.href
            var elementClick = $(caller).attr("href")

            var destination = $(elementClick).offset().top;
            $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination+settings.offset}, settings.speed, function() {
                window.location.hash = elementClick
            });
            return false;
        })
    })
}

请注意,我刚刚添加了一个offset选项。所以如果你的固定div的高度是60px,那么就用$('#whatever').anchorAnimate({offset: 60});调用它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11598433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档