1024快乐!浅谈scrollTop需要踩的坑

2023-05-16

开始之前,需要分清楚scrollToscrollTop

坑one

1.设置浏览器scrollTop

最好通过用户操作设置滚动,或者setTimeout延时滚动

// Chrome和Safari用法一样
window.scrollTo(x, y)

可查看MDN说明。

2.设置元素scrollTop
// Chrome和Safari下效果一样
// 条件:刷新页面
// 效果:元素y轴滚动100
<script>
    let obox = document.getElementById("box");
    obox.scrollTo(0, 100); 
</script>

坑two

1.获取浏览器scrollTop值
// Chrome下
// 条件1:页面首次刷新或者页面刷新前滚动条在最顶部
// 效果1:输出0

// 条件2:假如页面刷新前滚动条在500处
// 效果2:刷新后输出500
<script>
	var scroll_top = document.documentElement.scrollTop;
	// 在Chrome下document.body.scrollTop一直为0
	console.log(scroll_top);
</script>
// Safari下
// 条件1:页面首次刷新或者页面刷新前滚动条在最顶部
// 效果1:输出0

// 条件2:假如页面刷新前滚动条在500处
// 效果2:刷新后输出500
<script>
	var scroll_top = document.body.scrollTop;
	// 在Safari下document.documentElement.scrollTop一直为0
	console.log(scroll_top);
</script>

这里Chrome和Safari获取元素到滚动条的高度主要区别在于:
document.documentElement.scrollTop还是document.body.scrollTop

2.获取元素scrollTop值

// Chrome和Safari下效果一样
// 条件:刷新页面
// 效果:元素y轴滚动100,输出100
 <script>
    window.onload = function () {
      let obox = document.getElementById("box");
      obox.scrollTo(0, 100);
      console.log(obox.scrollTop);// result: 100
    }  
  </script>

总结

获取scrollTop兼容写法:

function getScrollTop() {
    var scroll_top = 0;
    if (document.documentElement && document.documentElement.scrollTop) { //先获取chrome
        scroll_top = document.documentElement.scrollTop;
    } else if (document.body) {
        scroll_top = document.body.scrollTop;
    }
    return scroll_top;
}

这样写不适用于刷新后获取,除非通过UA区分是什么浏览器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1024快乐!浅谈scrollTop需要踩的坑 的相关文章

随机推荐

  • orb-slam中的orb特征

    1 ORB特征简介 ORB是Oriented FAST and Rotated BRIEF xff08 oFAST and rBRIEF xff09 的简称 xff0c ORB的名字已经说明了其来源 xff0c 其实ORB特征是采用FAST
  • 计算机组成原理 第二篇:总线 1.总线原理和意义

    总线是什么 总线是连接多个部件的信息传输线 是各部件共享的传输介质 总线可以传输的原理 总线实际上是由许多传输线或通路组成 每条线上保持的电平高低即是所传输的信号 每条线可一位一位地传输二进制代码 一串二进制代码可以在一段时间内逐一传输完成
  • 主流深度学习算法简介

    深度学习算法简介 1 深度学习主流算法包括 1 1 CNN 卷积神经网络 卷积神经网络 xff08 CNN xff09 是最常见的深度学习方法之 一 自20 世纪80 年代后期以来 xff0c CNN 已应用于视觉识别与分类任务 xff0c
  • 常见外贸英文术语(下)

    很多从事外贸行业的人都会用Skype IntBell AntTone等网络电话和客户沟通 xff0c 但是有时候会因为一些外贸行业的专业英文术语闹出笑话 今天就让我们来总结一些外贸常见英文术语 xff0c 让你和客户沟通更加顺畅 xff01
  • Phpstorm2018 使用破解补丁永久激活

    1 安装phpstorm xff0c 安装包请自行官网下载 http www jetbrains com phpstorm download 2 下载JetbrainsCrack jar文件 xff0c 存放至你的phpstorm执行文件同
  • va_start 与 va_end用法

    1 包含头文件 include lt stdarg h gt 2 使用方法 参考 http www cnblogs com hanyonglu archive 2011 05 07 2039916 html include lt stdio
  • jetson-sd卡制作(批量烧写)

    jetson系列如果使用sd卡开发 xff0c 开发完成后可以不用重新制作根文件系统 拷贝目前的SD卡即可实现批量烧写 一 开发好的SD卡制作img文件 1 将sd卡插到PC端 xff0c 查看sd卡设备 eg dev sdd fdisk
  • 结构体知识点

    结构体的结构如下 xff1a span class token comment 关键字struct是数据类型说明符 xff0c 指出下面说明的是结构体类型 span span class token keyword struct span
  • SurfaceView 的一般绘制View用法(一)

    前段时间写了不少关于自定义View相关的文章 xff0c 最近两个项目同时开工 xff0c 忙成狗了 xff0c 这不是不写博客的理由哈 xff0c 今晚写一篇关于SurfaceView相关的博客 xff0c 还是和以前一样 xff0c 今
  • WorkerMan实现Web通讯(使用Vue实现前端页面逻辑)

    需要使用到的扩展 https github com tangbc vue virtual scroll list 最终效果 对话框 主页面 Main vue lt template gt lt div gt lt chat message
  • [VS][原创]vs2019新建项目提示未正确加载nvdapackage包

    第一步 xff1a 确认cuda 43 cudnn以及驱动程序都安装了 第二步 xff1a 从win11菜单栏搜索打开Developer Command Prompt for VS 2019 xff0c 注意要以管理员身份运行 xff0c
  • 2016年linux c程序员和初学者不得错过的精品图书18册

    1 图书名称 零点起飞学Linux C编程 图书信息 陈冠军 清华大学出版社 2013 09 01 2 图书名称 Linux C从入门到精通 图书信息 明日科 清华大学出版社 2012 12 01 3 图书名称 Linux C编程一站式学习
  • 面试造飞机系列:看架构师如何设计微服务接口

    来源 后端技术学堂 责编 Carol 封图 CSDN下载于视觉中国 在微服务设计中 xff0c 服务间接口通信设计常见的有两种方式 xff1a RPC 和 REST xff0c 关于微服务和 RPC 的更多细节 xff0c 可以参考我上一篇
  • C++ 数组(vector)常用操作总结

    目录 1 vector对象的定义和初始化方式 2 vector 常用基础操作 3 使用迭代器的遍历 插入 删除操作 4 vector 元素的重排操作 xff08 排序 逆序等 xff09 5 vector 中找最值 6 改变vector大小
  • ROS 节点初始化步骤、topic/service创建及使用

    目录 1 节点初始化步骤 2 service 创建及使用 3 topic创建及使用 4 框架总结 这是一个总结复盘的记录 1 节点初始化步骤 在 mian 函数中使用 ros init 初始化节点 xff0c 注册节点名 xff0c 这里注
  • Docker+xrdp+understand

    创建容器 我使用的是Ubuntu18 04的镜像 xff0c 注意把3389端口映射出来 docker run it name understand p 3399 3389 ubuntu 18 04 安装xrdp协议 span class
  • 如何下载Amazon页面产品视频

    step1 右键 查看网页源码 step2 ctrl 43 f查找 MP4 step3 xff1a 复制相关URL
  • 高速信号参考GND平面和VCC平面,会带来不同的回路阻抗,影响信号质量

    1 1参考平面作用 参考平面的作用之一是就是给信号提供回流路径 xff0c 对于信号来说 xff0c 不管任何网络的铜平面都可以作为参考平面 选择GND作为参考平面与其他网络的区别在于 xff0c 使用其他网络提供回流路径时 xff0c 网
  • 如何理解防抖debounce和节流throttle

    本人通过阅读网络上防抖和节流多篇相关的文章 xff0c 并借鉴相关案例进行说明 防抖 防抖就像人眨眼睛一样 xff0c 不可能不停的眨 xff0c 每隔一定时间眨一下 xff0c 防止眼睛干涩 xff0c 如果不停眨眼 xff0c 别人以为
  • 1024快乐!浅谈scrollTop需要踩的坑

    开始之前 xff0c 需要分清楚scrollTo和scrollTop 坑one 1 设置浏览器scrollTop 最好通过用户操作设置滚动 xff0c 或者setTimeout延时滚动 span class token comment Ch