位置: 编程技术 - 正文

解决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)

  • 计提利息要计提手续费吗
  • 小规模城建
  • 车辆报废做账务处理依据的法规是
  • 公司收到生育津贴不发给员工 分录
  • 留抵税额下月抵扣的分录
  • 联营企业子公司抵消比例
  • 民办非企业捐赠承诺书
  • 公司所得税费用怎么算报多少钱
  • 进项和销项税额需要结转吗
  • 预估收入增值税申报
  • 以房抵顶工程款有效吗
  • 佣金和手续费税前扣除比例
  • 固定资产盘亏是营业外支出吗
  • 预付房租摊销账务处理
  • 企业年金税前扣除标准表
  • 税局定额的标准
  • 损益表和利润表的关系
  • 制造费用可以直接转入本年利润吗
  • 出售报废电脑要交什么税
  • 录入凭证时记账的依据是
  • 支付测量费的补贴费用怎么记账
  • 房地产企业土地出让金抵减销项税额
  • 出口退税的会计分录实例
  • win11怎么用win10界面
  • PHP:token_name()的用法_Tokenizer函数
  • 核准类减免税有哪些项目
  • linux mib
  • 生产型企业出口退税会计分录
  • dvd.rom
  • 如何计算业务招标价格
  • 印花税贴花怎么贴划线
  • 分支机构分摊税款的计算
  • 小满Vue3第三十六章(Vue如何开发移动端)
  • java面试题及答案下载
  • phpcms官网打不开
  • 公司购买烟酒怎么入账
  • 一般纳税人资格证明在哪里查询
  • 出口运费怎么入账
  • 新增四大行业营收排名
  • 记帐时借方是什么意思
  • 无形资产减值准备是什么科目
  • 绩效工资交个人所得税吗
  • 旧设备入账
  • 财务报表漏报了会影响领票吗
  • 融资租赁固定资产折旧年限
  • 未分配利润可以弥补亏损吗
  • 委托加工业务中需要计算缴纳增值税销项税
  • 买赠行为的会计处理
  • 核算产品的成本的表
  • 出口视同内销账务处理?
  • 备用金账目处理
  • 经纪代理代订机票差额专票抵扣
  • 企业一般户怎么查询
  • 人工费的发票税率怎么算
  • 国有资本金是什么意思
  • 多做费用有什么好处
  • 个体工商怎么申报
  • win8.1纯净版下载
  • Win10预览版桌面图标和任务栏不翼而飞怎么办?
  • freebsd安装教程
  • 硬盘安装64位win8.1/win8或win7操作系统图文教程
  • win7连接宽带
  • win8.1输入法打不了中文
  • 没有触屏如何使手机充电
  • node解析前端formdata数据
  • Android LayoutInflater原理分析,带你一步步深入了解View(一)
  • shell发送报文
  • React Native react-navigation 导航使用详解
  • Linux进程通信(IPC)方式简介
  • 批处理生成excel
  • js 函数写法
  • Shell脚本统计文件行数
  • jquery用什么编写
  • javascript教程 csdn
  • python连接mq
  • jQuery validate+artdialog+jquery form实现弹出表单思路详解
  • 北京市国家税务局电话
  • 北京环球影城服装
  • 车辆购置税查询不到应征欠税信息,不能进行扣款操作
  • 江苏省纳税信息查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设