javascript - 导航点击页面滚动的限制区域

标签 javascript jquery html css

当单击导航选项卡中的菜单时,我使用以下 jquery 代码滚动到特定部分。您现在一定已经猜到它是一个单页网站。更进一步,问题是当单击菜单时,它会滚动到该特定的 DIV 部分,但标题隐藏在菜单的 div 后面。我的意思是它向上滚动太多了。我想限制滚动级别。假设它应该比现在实际到达停止点之前停止 200px。是否可以?

这是我的代码

$(document).ready(function() {
    $('body').find('a').click(function(){
      var $href = $(this).attr('href');
      var $anchor = $($href).offset();
      var $li = $(this).parent('li');
      $li.addClass('active');
      $li.siblings().removeClass('active');
      $('body,html').animate({ scrollTop: $anchor.top }, 1000);
      return false;
    });
});

最佳答案

与其对 header 值进行硬编码,更好的方法是动态获取 header 的高度,这样它就不会在移动设备和其他设备上产生问题。

 $(document).ready(function() {
        $('body').find('a').click(function(){
          var $heightEx = $('.navbar').height(); // use your respective selector
          var $href = $(this).attr('href');
          var $anchor = $($href).offset();
          var $li = $(this).parent('li');
          $li.addClass('active');
          $li.siblings().removeClass('active');
          $('body,html').animate({ scrollTop: ($anchor.top - $heightEx)  }, 1000);
          return false;
        });
    });

编辑
这是我个人使用的代码

$("a").on('click', function(event) {
$heightEx = $('header').height(); 
if (this.hash !== "") {
  event.preventDefault();
  var hash = this.hash;
  $('html, body').animate({
    scrollTop: ($(hash).offset().top - $heightEx)
  }, 800);
} 

});

关于javascript - 导航点击页面滚动的限制区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51929851/

相关文章:

javascript - 单击外部时关闭 reactstrap 模态

c# - WebApi v2 不接受文本/纯媒体类型

jquery - 在兄弟垂直调整大小后,如何让 IE 正确地重新定位元素?

javascript - 表单提交没有看到我的自定义复选框为 :checked

css - DIV 在 Chrome/Firefox 中居中很好,但在 Safari 中不居中

javascript - GET 请求返回空数组而不是数组内容

javascript - 如果变量匹配另一个变量

javascript - 如何创建跟随鼠标的圆圈轨迹?

php - 如何让 PHP 将我的其他页面正确打印到 iframe 中?

javascript - Datepicker 检查用户的年龄,有时会在数据库中保存错误的值