当html,body设置为height:100%时如何scrollTop?

时间:2014-01-14 21:58:17

标签: javascript jquery

除非我从body和html中删除height: 100%,否则以下操作无效。但是,我需要这种风格,因为我将它用于页面上的其他元素。

HTML

<a href="#" id="scrollTop">Back to top</a>

的jQuery

$("#scrollTop").on("click",function(e){
  e.preventDefault();
  $(window).animate({scrollTop: 0}, 'slow');
});

即使尝试了以下仍有负面结果

$("#scrollTop").on("click",function(e){
  e.preventDefault();
  $("body, html").animate({scrollTop: 0}, 'slow');
});

的CSS

html, body {height:100%; min-height:100%;}

6 个答案:

答案 0 :(得分:14)

得到了这个问题,感谢评论我注意到我有body: overflow-x:hidden这意味着当我们在body上使用overflow时,scrollTop无效,html

答案 1 :(得分:6)

我在body { height: 100%; }scrollTop(0)时遇到了同样的问题。

由于我因为不同的原因无法更改html / css, 解决方法是在height之前删除scrollTop,然后恢复到初始状态。

// Change height:100% into auto
$('body').css('height', 'auto');
// Successfully scroll back to top
$('body').scrollTop(0);
// Remove javascript added styles
$('body').css('height', '');

答案 2 :(得分:2)

如果你可以使用min-height,它就不会破坏滚动功能。 (仅在Chrome中测试)

body, html {
    min-height: 100%;
}

答案 3 :(得分:0)

这对我有用:

$("#scrollTop").on("click",function(e){
  $('html,body').animate({scrollTop: 0}, 'slow');
});

http://jsfiddle.net/fvuy6/41/

答案 4 :(得分:0)

@Andrew Tibbetts:你的问题为什么设置溢出:隐藏阻止scrolltop。

根据我的理解,当我们说溢出隐藏时,我们说,我们不想显示额外部分,即请隐藏额外部分

所以我们不想滚动,这意味着scrolltop将始终保持为0

自从滚动顶部以来,我们向上滚动了多少。

答案 5 :(得分:0)

&#13;
&#13;
$(document).on('click', '.action', function() {
    $('html, body').css({height: 'auto'}).animate({
        scrollTop: $("#container").offset().top
    }, 500);
});
&#13;
&#13;
&#13;