位置: 编程技术 - 正文

解决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留美学生签证
  • 未开票收入已缴税额怎么入账
  • 销售库存商品计入什么科目
  • 投资款打到个人账户算诈骗吗
  • 销售旧货时的售后是什么
  • 增值税税率零税率
  • 个体工商户个人经营所得税优惠政策
  • 补贴收入需要缴纳增值税吗为什么
  • 蔬菜批发的利润怎么算
  • 企业所得税到底是25%还是5%
  • 流转税率是什么意思
  • 如果辞职了,能一次性拿到钱吗?
  • 小规模建筑公司可以开劳务发票吗
  • 企业的税收筹划
  • 设备固定资产原值
  • mac系统回到桌面快捷键
  • 保总保安服务有限公司
  • 实收资本与注册资本之间的关系
  • PHP:imagepalettetotruecolor()的用法_GD库图像处理函数
  • php获取另一个php返回内容
  • 生产企业的成本有哪些
  • php+mysql+jquery实现简易的检索自动补全提示功能
  • 老生常谈的常是什么意思
  • 失控增值税专用发票
  • 计提坏账准备需要确认递延所得税吗
  • 备用金管理方式
  • 存货都有什么科目
  • 个体工商户开票是企业还是个人
  • java的范式
  • 清包工一般计税如何开票
  • 出口免税申报流程视频
  • 财务报表审计的基础是独立性和专业性
  • 外经证适用范围
  • 坏账核销在企业所得税汇算清缴的填写
  • 外借资质交企业所得税怎么交
  • 农产品如何进入批发市场
  • 对公账户的流程
  • 银行存款的收付应严格执行()的规定
  • 哪些业务需要计提国别风险准备金
  • 赠送的产品怎么算成本
  • MySQL中truncate误操作后的数据恢复案例
  • sql server 3417错误
  • linux bin sbin
  • MySQL 5.6.36 Windows x64位版本的安装教程详解
  • win版本微信
  • win10打开软件提示允许此应用对你设备进行更改
  • CentOS安装scp命令详解
  • Linux中QQ软件的安装和配置
  • win102021年1月大更新
  • centos6.6
  • fsm32.exe是什么进程 有什么作用 fsm32进程查询
  • linux批量管理平台
  • window10光驱
  • cocos2dx AudioEngine初体验,音效播放结束判断测试
  • webpack 主题切换
  • bootstrap技术教程
  • linux怎么查看tomcat位置
  • 批处理获取本地连接名称
  • unity删除对象
  • Python实现以时间换空间的缓存替换算法
  • js控制浏览器返回按钮
  • js优化性能
  • 广东增值税电子普通发票图片
  • 县税务局可以去市里吗
  • 成都国家税务局每个月交全民付的钱是什么
  • 陕西省国家税务局总局官网
  • 国家税务认证平台是什么
  • 山东中信银行电话
  • 盐城企退人员养老金调整新标准
  • 美国纽约购物
  • 中级财务管理好难
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设