jquery 在单个哈希 anchor 上平滑滚动以到达顶部

标签 jquery scroll

我使用这个jquery平滑滚动功能:

$('a[href*=#]').on('click',function(event){
//event.preventDefault(); // nope
$('html,body').animate({scrollTop:$(this.hash).offset().top},500); 
});

单击 anchor 链接时它可以完美运行:

<a href="#section1">smooth scroll</a>

除非单击单个哈希返回顶部,例如:

<a href="#">home</a>

在这种情况下,我看到页面顶部,但没有平滑滚动效果..

我知道,如果链接调用页面上第一个元素的 id,则一切正常, 只是想知道是否有一种方法可以使用单个哈希来平滑地滚动到顶部

最佳答案

我建议在部分添加 anchor data-anchor-offset="30"并检查 anchor 。根据您的情况,将使用 defaultAnchorOffset。在这里进行一个工作演示:http://jsfiddle.net/v4tzngmr/

$('a[href*=#]').on('click',function(event){
     event.preventDefault();
    var defaultAnchorOffset = 0;
    var $anchor = $('#' + this.hash.substring(1));
    var anchorOffset = $anchor.data('anchor-offset');

    if (!anchorOffset) // for when anchor doesn't have the offset attribute like Section 4
    anchorOffset = defaultAnchorOffset;
    var offset = $anchor.offset() === undefined ? 0 : $anchor.offset().top;
    $('html,body').animate({
        scrollTop: offset - anchorOffset
    }, 500);
});

关于jquery 在单个哈希 anchor 上平滑滚动以到达顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26192272/

相关文章:

javascript - 当我单击列表中的 anchor 时如何获取我的 parent parent

javascript - 如果用户一直向下滚动,则按间隔向下滚动

Php fetch 返回字符串而不是 bool 值 "true/false"

php - 页面未使用 AJAX 加载

php - 每 5 分钟从 mysql 更新一次的 jquery div 容器

jquery - 悬停滚动,点击速度

javascript - 在 iPhone 面板的幻灯片中启用内容滚动

ios - 在 UICollectionView 中创建缓慢滚动到 indexPath

javascript - 没有滚动条的水平菜单滚动

jQuery 选择器 : Id Ends With?