位置: 编程技术 - 正文

解决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%变11%
  • 差旅费处理会计分录
  • 每年税控盘维护费会计分录
  • 国家相关规定出车补助的文件
  • 增值税发票抵扣多少个点
  • 170平方的房子装修费用
  • 固定资产转售
  • 企业怎么申请无运输工具承运资质
  • 开办费转入管理费用分录
  • 劳务派遣差额征税税率是多少
  • 中药税率什么时候变为9
  • 退休人员返聘后辞退怎样补偿
  • 附加税交税依据
  • 出租车发票有出租车信息吗
  • 二千万注册资金是多少
  • 利润总额就是会计准则吗
  • 在win11
  • win10如何删除windows账户
  • hdmi连接电视无法全屏
  • 设立全资子公司的风险
  • 公司收到项目的现金
  • 苹果11怎么充不上电了
  • python中函数的可变参数有哪几种?各有什么特点?
  • 定额发票收入怎么样确定
  • 先出库还是先开票
  • php ftp上传文件
  • php axios
  • wordpress.org
  • 写入缓存策略无法更改
  • 索尼体积最小的微单
  • 矿产资源补偿费是什么
  • 水利建设基金计税依据
  • html-css
  • codegenerator用法
  • vue的路由守卫有哪些钩子函数
  • 2023年前端开发找工作好找吗
  • 芝麻信用app
  • 应该如何打造自己
  • 企业年金管理费专票能抵扣吗
  • 如何查询上年企业所得税
  • 入库单正确填写方法
  • 销售退回的会计科目
  • 固定资产入账的方式
  • 帝国cms专题
  • 高新技术企业相关税收政策
  • .dot python
  • rust 前端开发
  • pythonjam怎么用
  • 长期借调人员工资福利
  • 建筑安装增值税纳税地点
  • 母公司持有子公司70%股权
  • 广告公司可以不开发票吗
  • 合同权利义务包含债务吗
  • 应收贷方余额表示什么意思
  • 出口转内销怎么做
  • 股东追加投资怎么算
  • 对非本单位的营销方案
  • 印花税根据一个月的销售额来计提吗
  • 关于合同履约成本的表述错误的有
  • 关于低值易耗品的评估说法正确的有()
  • 租赁期限为一年
  • 大数据量高并发症有哪些
  • windows8如何设置电脑锁屏时间
  • linux scp远程拷贝文件及文件夹
  • Linux中通过Socket文件描述符寻找连接状态介绍
  • win10新版磁贴
  • 深入理解rcu
  • vs2012怎么样
  • prize draw是什么意思
  • 批量dns解析
  • java learning
  • 医保12333查询系统
  • 深圳市税务局好考吗
  • 福建省税务局 电子
  • 怎么使用企业级app
  • 福建地方税务局历任 李
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设