单击链接时禁用默认锚点跳转

Posted

技术标签:

【中文标题】单击链接时禁用默认锚点跳转【英文标题】:Disable default anchor jumping when clicking on a link 【发布时间】:2019-02-01 10:38:30 【问题描述】:

我已经搜索了几个小时,终于找到了一个轻量级的 jQuery 代码,它允许我对锚链接的点击进行动画处理,但是当我点击一个链接时,它会向下动画,然后在没有动画的情况下跳到顶部 100px,因为哈希是在动画之后赋予 url,当您单击它时会导致默认的锚链接行为。

我有一个代码示例给你,我有一点评论来修复,或者我认为这将是一个修复......

// Scroll.js (https://css-tricks.com/snippets/jquery/smooth- 
scrolling/#comment-1635851)

/*
*   Scroll.js:
*   1. added -100 after the .top property which reflects the navigation height.
*/

$(document).ready(function()

// Add smooth scrolling to all links
$('a').on('click', function(e) 

  // Make sure this.hash has a value before overriding default behavior
  if (this.hash !== "") 
    // Prevent default anchor click behavior
    e.preventDefault();

    // Store hash
    var hash = this.hash;

    // Using jQuery's animate() method to add smooth page scroll
    // The optional number (800) specifies the number of milliseconds it takes to scroll to the specified area
    $('html, body').animate(
      scrollTop: $(hash).offset().top-100 // /* [1] */
    , 800, function()

      // Add hash (#) to URL when done scrolling (default click behavior)
      window.location.hash = hash;
    );
   // End if
);

);

【问题讨论】:

【参考方案1】:

只需在锚href属性javascript::void(0)上写

<a href="javascript:void(0)"></a>

虽然如果你想让它作为一个锚点并有一个 url ......这是行不通的 :(

【讨论】:

以上是关于单击链接时禁用默认锚点跳转的主要内容,如果未能解决你的问题,请参考以下文章

JQuery 实现 锚点跳转

Vue爬坑之旅:vue单页面中锚点跳转

使用 javascript 进行锚点跳转

thinkphp怎么跳转到指定页面的锚点

锚点跳转的过渡效果

react-router解决锚点跳转问题