平滑滚动到另一个页面锚

时间:2019-11-07 15:06:46

标签: jquery smooth-scrolling

我在主页上有计划部分,当我单击计划时(在顶部导航栏中),我还有其他页面,它可以平滑地在主页上平滑滚动,但是在其他单独的页面上则无效!

为此,我尝试了几种解决方案,但并没有达到应有的效果。

我的HTML代码:

<ul class="navbar-nav">
    <li class="nav-item"><a class="nav-link" data-value="home">home</a></li>
    <li class="nav-item"><a class="nav-link" data-value="services">services</a> 
</li>
    <li class="nav-item"><a class="nav-link" data-value="recent-posts">posts</a> 
</li>
    <li class="nav-item"><a class="nav-link" data-value="plans">plans</a></li>
    <li class="nav-item"><a class="nav-link" data-value="more">more..</a></li>
</ul>

我的js代码:

$('header .navbar-nav > li > a, .services .arrow > .arrowDown').click(function () {
    $('html').animate({
        scrollTop: $('#' + $(this).data('value')).offset().top
    }, 500);
});

我希望当我按下链接并且在另一个页面上时,它应该加载主页,并向下滚动到我的主页上的部分。

我基本上是个初学者,我不太了解,如果不能更好地解释我的问题,我感到很抱歉。


编辑: 我尝试了另一种方法来解决我的问题,但是,我面临着一个新方法。 我所做的是检查当前页面的ID是否具有特定值?如果是,那么我可以平滑滚动到该部分,否则我必须重定向到主页,然后滚动该特定部分。

我的新代码是:

$('header .navbar-nav > li > a, .services .arrow > .arrowDown').click(function () {
  // check if $(this).data('value') exist in the current page
  if ($('#' + $(this).data('value')).length) {
    // smooth scroll to that element
    $('html').animate({
      scrollTop: $('#' + $(this).data('value')).offset().top
    }, 500);
  }
  // else load the homepage, then scroll to that element
  else { 
    document.location.href = "/";
    $('html').animate({
      scrollTop: $('#' + $(this).data('value')).offset().top
    }, 500);
    // console.log('this item doesn\'t exist in the current page')
  }
});

我期望的是,如果当前页面不是主页&&并且当前页面中不存在数据值,那么我必须重定向到(主页)并平滑滚动到该特定部分。 / p>

非常感谢。

1 个答案:

答案 0 :(得分:0)

这是我自己的解决方案,并且有效:

// == Smooth scroll to section == //
$('header .navbar-nav > li > a, .services .arrow > .arrowDown').click(function () {
    // check if $(this).data('value') exist in the current page
    if ($('#' + $(this).data('value')).length) {
        // smooth scroll to that element
        $('html').animate({
            scrollTop: $('#' + $(this).data('value')).offset().top
        }, 500);
    }
    // else load the homepage, then scroll to that element
    else { 
        document.location.href = "/kazamiza/" + '#' + $(this).data('value');
    }
});