返回顶部按钮这样写可以吗,是不是性能不太好

来源:2-6 实现返回顶部动画

DanielDu87

2023-01-23 16:24:11

setInterval(function() {
   if (document.documentElement.scrollTop === 0) {
      backtotop.style.display = "none";
   } else {
      backtotop.style.display = "block";
   }
}, 10);


写回答

1回答

好帮手慕久久

2023-01-26

同学你好,解答如下:

1、代码逻辑是有问题的。定时器每10ms就执行一次,但是执行时,代码中并没有改变页面的滚动距离,即没有如下代码:

https://img.mukewang.com/climg/63d1df4209098ae008950095.jpg

页面滚动距离不变,就无法回到顶部,document.documentElement.scrollTop === 0这个条件也无法满足。

2、同学的代码,定时器一旦开启就无法关闭了,所以页面中始终会有一个定时器在执行,性能肯定不如课程中的写法好。不过,现在浏览器、电脑的性能都很高,一个定时器造成的性能问题可以忽略不计。

3、document.documentElement.scrollTop === 0这个条件也不是很优。页面滚动距离的数值会很随机(可能100、200,也可能是101、12、57.66666等等),页面滚动到顶部的瞬间,代码计算到的document.documentElement.scrollTop的值,可能是小于0的,此时就不满===0。建议改成如下条件

document.documentElement.scrollTop <= 0。

祝学习愉快!

0

前端工程师

前端入门如同写字,如果你不知道从哪开始,那就选择前端(含Vue3.x,React17,TS)

20327 学习 · 17877 问题

查看课程