经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
JS滚动到顶部踩坑解决记录
来源:jb51  时间:2023/5/17 8:51:33  对本文有异议

正文

一般在比较长的页面中会有一个滚动到顶部的按钮,用户点击一下 300ms 内,会滚动到顶部,有动画效果。

一开始我想,这不是很简单,一行代码完美解决

  1. $(document.documentElement).animate({scrollTop: 0}, 300);

使用这个可以到顶部,但是没有动画,没有采用

  1. $(document.documentElement).scrollTop(0)

等到了手机上才发现,点击居然没有反应,才发现原来是我想的太简单,一个滚动到顶部的按钮竟然有这么多兼容问题。

document.body在 手机上能用,pc 上不能用

  1. $(document.body).animate({scrollTop: 0}, 300);
  2. console.log(document.body.scrollTop) // 移动端有值,pc 为0

document.documentElement在 PC 上能用,但手机上不能用

  1. $(document.documentElement).animate({scrollTop: 0}, 300);
  2. console.log(document.documentElement.scrollTop) // pc端有值,移动端为0

也就是说 PC 端滚动的是document.documentElement,在移动端滚动的是 document.body

如果没有一个更好的 api,那么就需要在分环境处理滚动元素,这样显的就有点麻烦。

这时候 document.scrollingElement 就出现,这个 api 就是为解决这个问题诞生的,通过 document.scrollingElement.tagName 可以看到在 PC 端是 html 在移动端是 body 。

在做解决问题的时候,搜索到一个 api

  1. window.scrollTo({top: 0, behavior: "smooth"})

以为 js 良心发现,提供了一个这么好用的 api,可以滚动到顶部,还有动画,查看兼容性的时候, ios 居然不支持,害,果然就没有好事情。

所以在遇到滚动到顶部时,document.scrollingElement 除了 IE 和 opera 和部分低版本浏览器不支持外,可以基本满足需求。

以上就是JS滚动到顶部踩坑解决记录的详细内容,更多关于JS滚动到顶部的资料请关注w3xue其它相关文章!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号