平滑滚动如何使用摘录?

时间:2016-12-31 00:32:52

标签: javascript jquery hash smooth-scrolling

我有这个代码,效果很好。

$('a[href*="#"]:not([href="#"])').click(function() {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '')
    && location.hostname == this.hostname) {
    var target = $(this.hash);
    target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
    if (target.length) {
        $('html, body').animate({
            scrollTop: target.offset().top
        }, 1000);
        return false;
    }
}

});

但我也有一些元素,我不想为它们应用平滑滚动!我该怎么做 ? 示例 - http://codepen.io/zoom/pen/ggYaXZ  我不希望它适用于&lt; li><a href="#apple">Scroll to Section Apple</a></li>

2 个答案:

答案 0 :(得分:0)

您可以使用其他data-属性:

$('a[href*="#"]:not([href="#"]):not([data-no-smooth-scroll])').click(function() {

html内添加data-no-smooth-scroll="true"到相关链接:

<a href="#apple" data-no-smooth-scroll="true">Scroll to Section Apple</a>

这是你的codepen的一个分支:
http://codepen.io/anon/pen/dNbYKe

答案 1 :(得分:0)

你可以制作一个if语句来删除每个具有某个类的元素的平滑滚动,即class="notThis"

在这种情况下,您必须将该类添加到#apple链接元素:<a class="notThis" href="#apple">Scroll to Section Apple</a>

就像这样

$('a[href*="#"]:not([href="#"])').click(function() {
    if ($(this).attr("class") !== "notThis"){
    if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
    var target = $(this.hash);
    target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
    if (target.length) {
      $('html, body').animate({
        scrollTop: target.offset().top
      }, 1000);
      return false;
    }
  }
  }
});