关于锚点跳转过度

下面是一个锚点跳转的方法:
疑问:为什么单独写一个$("body")或$("html"),为什么就没有过渡的效果,而两个写在一起却有,这是为什么?然道是说要body和html一起跑起来?

$(".list").bind('click', function(event) {
    event.preventDefault();
    var aimId = $(this).attr("href");
    console.log(aimId);
    var moveNum = $(aimId).offset().top;
    console.log(moveNum);
    console.log(document.body.scrollTop);
   

    $("body,html").animate({
           scrollTop : moveNum
    },1000);

  });
阅读 3.4k
3 个回答

FF应该是只支持body,chrome只支持html,不过你两个单独都不行就比较奇怪了。

chrome下单独$("body")不行,但是单独$("html")是可以的,firefox没试过,两个一起写可能是为了兼容不同浏览器?

我测试了下ie firfox chrome都可以的,这样写是考虑有可能滚动的是body,这种情况$("html")就没用了如下:

html,
body {
    height: 100%;
}

html {
    overflow: auto;
}

body {
    overflow: auto;
}

检测页面滚动是谁在滚动

$('body').on('scroll', function () {
            console.log('body')
        });
$(window).on('scroll', function () {
            console.log('window')
        });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题