位置: 编程技术 - 正文

解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法(js页面滚动到指定位置)

编辑:rootadmin

推荐整理分享解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法(js页面滚动到指定位置),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js控制滚动条到页面某个位置,js控制滚动条到页面某个位置,js前端页面滚动事件,js页面滚动到指定div,js前端页面滚动事件,解决js页面滚动问题,解决js页面滚动问题,js页面滚动到指定div,内容如对您有帮助,希望把文章链接给更多的朋友!

最近在做博客的目录功能,发现一个在现代浏览器间的一个bug,或是称之为差异,即页面滚动值(scrollTop)的获取与设定。

在此之前先说一下关于页面元素的坐标获取,这张图的经典性不必再提。

实现滚动到某位置功能

一个最主要的功能就是实现点击标题页面滚动,因为我们要滚动到页面某个标题,所以需要计算出滚动这个元素的具体绝对位置,而常用的offsetTop是获取到当前元素与之最近的决定其定位的元素的偏移量,此处不适用。

此处应使用浏览器原生提供的 getBoundingClientRect 接口,此函数返回的是元素距离浏览器各边距的绝对位置,跟是什么定位类型的无关,非常适合制作页面滚动效果。

获取滚动需要的数据, body 的 scrollTop 即页面已经被滚动所隐藏的高度,再根据上面提到的接口获取元素距离浏览器顶部的距离,可以算出需要的滚动的高度,关系图如下:

遂,页面要滚动到的位置就是:

这里顺带说下getBoundingClientRect().top 获取的元素在被滚动隐藏与非滚动时的区别:

如上图可以看出,即使要滚动到的元素部分在浏览器边界外,获取到的top即为负数,遂计算出来的页面高度依然是正确的。

点击目录跳转的功能就做完了,至今为止都很完美。

FireFox与Chrome的scrollTop的兼容问题

直到我今天在FireFox测试时发现,火狐下页面滚动的跳转功能无法使用。

解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法(js页面滚动到指定位置)

1、原生接口测试

这里先提一下:

document.documentElement 即 <html> 元素,而 document.body 即 <body> 元素。

测试结果,在火狐上只能通过html元素来获取和设定页面滚动高度,而在谷歌上反之只能用body元素来获取和设定。

2、jquery接口测试

上面是使用原生的scrollTop属性来获取与设定,而jquery自己也实现了对scrollTop属性的封装,可以试试他的兼容性。

发现采用 $(document) 可以实现对获取和设定scrollTop的兼容,大喜。

3、scrollTop动画实现测试

虽然实现了兼容,但为了有更好的效果,我希望采用动画的方式滚动到页面的某位置,而不是直接跳转,这里采用jquery的 animate 函数来实现。

发现虽然可以采用$(document)来实现获取和设定,但动画效果都无法使用,还是只能用body元素和html元素来实现。

最终解决方案

遂最完美的实现方案是:

获取或直接设定当前页面滚动高度:

有动画效果的设定当前页面高度:

标签: js页面滚动到指定位置

本文链接地址:https://www.jiuchutong.com/biancheng/387092.html 转载请保留说明!

上一篇:JS使用post提交的两种方式(javascript post语法)

下一篇:java必学必会之static关键字(javastudio)

  • 进口商品需要缴纳哪些税
  • 小规模纳税人有增值税吗
  • 单位收到已交个税的劳务发票还需要申报个税吗
  • 如何查询开出的全电发票
  • 亏损金额需要对抵实收金额吗
  • 加计抵减的税额多长时间
  • 定额备用金的账务处理
  • 小规模纳税人多少免征增值税
  • 公允价值变动税务处理
  • 物业公司付电业公司的电费如何做账务处理?
  • 企业所得税营业税金及附加
  • 印花税应税凭证填是还是否
  • 砂子开票税率
  • 为什么餐费不能计入在差旅费
  • 2021年新疆果业灰枣销售情况
  • 固定资产清理属于资产类的备抵科目吗
  • 长期未收回的应收账款企业所得税
  • 什么情况下一般纳税人可以转为小规模纳税人
  • 合同的情势变更是什么
  • win10系统没有声卡驱动
  • adv举例
  • 前端获取post请求返回数据
  • 神舟战神k670c-g4e1游戏笔记本怎么样?
  • 长期待摊费用的摊销分录
  • php怎么设置图片的大小
  • php上传照片
  • echarts柱状图立体
  • 企业的职工教育经费计入什么费用
  • vue3路由守卫 微信授权登陆
  • vue动态绑定背景图
  • 个税网上申报流程视频
  • 冲回上月暂估入账的商品会计分录
  • 通行费发票电子化 机场路
  • 会计怎么实现财务自由
  • SQL Server 使用 SET FMTONLY ON 获得表的元数据
  • 印花税怎么交税率是多少
  • 技术转让和技术开发区别
  • 建筑工程租赁费属于什么费用
  • 车子上公司户和个人户哪个更好
  • 小规模未开票收入按1%还是3%
  • 视同销售是指什么?
  • 开出咨询费发票应该注册什么企业?
  • 应收账款计提的坏账准备可以转回
  • 公司水电费分摊怎么算
  • 低值易耗品如何摊销
  • 交易性金融资产入账价值怎么计算
  • 进口材料海关需要什么手续
  • 企业期货投资收益要交所得税吗
  • 事业单位收个人所得税吗
  • 工程公司本月没发工资
  • 应收账款如何记账
  • 固定资产多少钱入账
  • sqlserver如何查询表数据
  • win8/10whql
  • win8.1怎么关闭更新
  • [视频]看科学家如何将纯净水变成金属
  • 迁移windows
  • ubuntu zed
  • xp电脑怎么样
  • ubuntu 12.04安装
  • win10通知栏点击没反应
  • windows 查看补丁
  • 萝卜家园和番茄花园哪个好
  • win8和win10双系统切换
  • win7旗舰版64位系统开机时软件设置自动启动详细图文教程
  • linux使用curl进行接口测试
  • android应用程序的主要语言是java
  • Ver、Vol、Ctty命令的使用教程
  • androidstudiosdk
  • css不需要编译
  • 详解JavaScript ES6中的Generator
  • jquery绑定事件和移除事件
  • js html css
  • 探寻Javascript执行效率问题
  • 甘肃省政府非税收入电子发票在哪里打印
  • 国税纳税服务有哪些项目
  • 滴灌带设备一套多少钱
  • 博兴公安局局长
  • 房产税的计税依据及税率
  • 乡村振兴与文化遗产保护研究
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设