位置: 编程技术 - 正文

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

  • 办房产证的完税证明是什么
  • 企业无票支出怎么入账
  • 一般纳税人劳务费税率是13还是6
  • 认缴注册资本的风险
  • 应收账款的账面价值等于什么
  • 转让不动产增值税计算
  • 房产公司办公室布局
  • 补缴以前年度税费
  • 公司购买短期理财现金流量表怎么填
  • 工业总产值填报原则
  • 公司买了股票怎么做账
  • 国税和地税分别占多少
  • 什么税不计入税金及附加科目
  • 企业交税的钱用在哪里
  • 陈列费发票属于什么科目
  • 不同的征税主体对同一纳税人
  • 增值税减免税申报明细表免税代码和名称
  • 成品油发票应该怎么冲红?
  • 购买设备对方垫付运费会计分录
  • 异地缴纳附加税怎么申报
  • 现金支票存根会计要签字吗
  • 所得税收入包含哪些
  • 0申报季末资产总额填多少
  • 广告公司结转收入应交税费分录?
  • 利息收入营业收入
  • 文艺汇演活动经历怎么写
  • 企业收到科技创新发票
  • 苹果微信朋友圈怎么发文字不带图片
  • 什么是跨区域涉税业务
  • 房地产项目如何通过抖音宣传
  • 出差补贴如何入账报销
  • 集体租赁住房有房产证吗
  • promise歌曲
  • 纺织企业成本核算方案
  • 滴滴打车开具的电子发票可以抵扣吗
  • 前端项目和后端项目
  • ajax提交表单数据
  • python3.4 numpy
  • 信用减值损失科目借贷方向
  • python2.7 协程
  • 账务核对的主要内容
  • access数据库修改字段类型
  • 企业所得税税款可以税前扣除吗
  • 企业所得税几种税率
  • 实际发的工资跟个人所得税不一样怎么办
  • 老板自己的钱给公司
  • 佣金是买卖股票都收吗
  • 企业没有工会的需要计提嘛
  • 政府补贴的装修费是免税的吗
  • 房租进项发票怎么处理
  • 小规模纳税人去年免税,红冲后今年开多少税率的发票
  • 申报系统中印花税报表怎么填
  • 购买方账务处理
  • mysql 死锁解决
  • Windows Server 2008的节能降耗
  • linux修改yum
  • 如何创建mac系统安装盘
  • win7更新不了80072efe
  • windowsxpdos命令
  • centos7安装完成后无法启动
  • realpopup.exe - realpopup是什么进程
  • win10开机6秒
  • Linux中通过Socket文件描述符寻找连接状态介绍
  • 用android做一个简单的软件
  • 深入理解typescript 豆瓣
  • 苹果多点触控
  • unity3d怎么做动画
  • js中文本框设置的代码
  • unity3d初学者教程视频
  • json数据格式的理解
  • javascript规范
  • 歺包做法
  • js简单网速测试方法
  • js uridecode
  • 国家税务局四川省电子税务局
  • 安徽省低保查询入口官网
  • 国税局征管科
  • 锦江区税务局搬迁新地址
  • 税务管理工作检讨书范文
  • 企业所得税年报什么时候开始申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设