原文链接

缓动滑动到底部

使用requestAnimationFrame缓动滑动到底部

  1. setTimeout(scrollToBottom, 100);
  2. scrollToBottom = () => {
  3. console.log('scrollToBottom');
  4. (function smoothscroll() {
  5. const currentScroll = document.documentElement.scrollTop || document.body.scrollTop; // 已经被卷掉的高度
  6. const clientHeight = document.documentElement.clientHeight; // 浏览器高度
  7. const scrollHeight = document.documentElement.scrollHeight; // 总高度
  8. if (scrollHeight - 10 > currentScroll + clientHeight) {
  9. window.requestAnimationFrame(smoothscroll);
  10. window.scrollTo(0, currentScroll + (scrollHeight - currentScroll - clientHeight) / 2);
  11. }
  12. })();
  13. };

指定dom的滚动条滑动到底部

一般情况下使用body的滚动条,但是特殊情况下需要指定某个dom的滚动条滑动到最底部,因此需要指定滚动条容器,方便计算出容器的高度和容器内容的总高度;

  1. setTimeout(scrollToBottom, 100);
  2. scrollToBottom() {
  3. const domWrapper = document.querySelector('.wrapper'); // 外层容器 出现滚动条的dom
  4. (function smoothscroll() {
  5. const currentScroll = domWrapper.scrollTop; // 已经被卷掉的高度
  6. const clientHeight = domWrapper.offsetHeight; // 容器高度
  7. const scrollHeight = domWrapper.scrollHeight; // 内容总高度
  8. if (scrollHeight - 10 > currentScroll + clientHeight) {
  9. window.requestAnimationFrame(smoothscroll);
  10. domWrapper.scrollTo(0, currentScroll + (scrollHeight - currentScroll - clientHeight) / 2);
  11. }
  12. })();
  13. }