scrollTop设置滚动条用法

前提

工作中需要做一个点击右侧网元或板卡,左侧topo图滚动到对应位置

用到的知识点

 scrollTop(),position(),工作环境中用了Jtopo,ZtreeMath.abs(value)  获取一个值的绝对值
  • scrollTop定义与用法

scrollTop() 方法返回或设置匹配元素的滚动条的垂直位置。

scroll top offset 指的是滚动条相对于其顶部的偏移。

如果该方法未设置参数,则返回以像素计的相对滚动条顶部的偏移。
$(selector).scrollTop(offset) //offset可选

  • position定义与用法

position() 方法返回匹配元素相对于父元素的位置(偏移)。

该方法返回的对象包含两个整型属性:top 和 left,以像素计。
$(selector).position()

详解

下面是个人总结,如有不对请帮忙指出!


第一种情况:
① > 0 , 左侧topo树顶部仍在浏览器可视范围内:
③=②+①; //此时②=0

第二种情况:
① > 0 ,topo树顶部超出浏览器范围(此情况可与第一种合到一起写):
此时② < 0, ③ = 1 + Math.abs(②);

第三种情况:
① < 0,点击点在浏览器看不到的位置
此时③ =Math.abs( ② - ①)


源码:

//               根据topo图定位topo树let treeHeight = $("#right_topoTree ul").height();  //topo树高度var bheight = document.body.clientHeight;  //网页可视高度if(treeHeight > bheight*0.8){             //Topo树高度大于一定值时才进行定位,防抖const zTree = $.fn.zTree.getZTreeObj("topoTree");var sNodes = zTree.getSelectedNodes();if (sNodes.length > 0) {var tId = sNodes[0].tId;var offset =$("#"+tId).position(); const offsetTop = offset.top;   //当前选中节点距离顶部的高度,即 1 的高度var globalOffset = $("#topoTree_1_a").position();var globalOffsetTop = globalOffset.top;   //全局视图节点距离顶部的高度 即 2 的高度if(offsetTop >= 0){if(offsetTop - (bheight/2) >= 0){$("#right_Tree").scrollTop(offsetTop+Math.abs(globalOffsetTop));}}else{if(offsetTop<0){var scroll = globalOffsetTop-offsetTop;$("#right_Tree").scrollTop(Math.abs(scroll));}}}}

总结:
中间用了好久思考当点击点不在浏览器界面内,滚动条的位置怎么获取,是相对于谁获取的。
只要弄明白,滚动条的获取是相对于其顶部的,就简单多了,加油!

scrollTop()方法相关推荐

  1. 关于使用JQ scrollTop方法进行滚动定位

    没图我说个锤子,先来个自拍镇楼. 又到了每周周五总结时间.我广州刘德华又来讲故事了.这一周没啥任务,就一个任务,产品口头交代了两句,也没有psd没有设计图没有样式.自由发挥,你自己敲代码做个作品出来. ...

  2. jQuery的操作css的几种方法和位置,尺寸以及scrolltop方法

    jQuery操作css jQuery可以通过css方法直接给指定元素查看,更改,添加css样式 <script>$(function () {//jQuery可以通过css方法直接给指定元 ...

  3. 深度理解Jquery 中 scrollTop() 方法

    这是工作遇到scrollTop() 方法.为了强化自己,把它记录在博客园当中. 下面就开始scrollTop 用法讲解: scrollTop() 定义和用法 scrollTop() 方法设置或返回被选 ...

  4. scrollTop方法无效问题

    遇到很奇怪的问题本来使用scrollTop方法在电脑上生效.在安卓手机上却没有生效. scrolltop和scrollTo 在安卓上都无效.本地浏览器上没问题. scrollTop参数详情 结果用安卓 ...

  5. JS中完美兼容各大浏览器的scrolltop方法

    1.各浏览器下 scrollTop的差异 IE6/7/8/9/10: 对于没有doctype声明的页面里可以使用 document.body.scrollTop 来获取 scrollTop高度 : 对 ...

  6. js获取页面高度以及jquery获取页面滚动距离scrollTop方法

    $(window).height(); //获取浏览器自身高度 也就是你浏览器所能看到的页面的那部分的高度 这个大小在你缩放浏览器窗口大小时 会改变 $(document).height(); //获 ...

  7. scrolltop 原生js_JS中完美兼容各大浏览器的scrolltop方法

    1.各浏览器下 scrollTop的差异 IE6/7/8/9/10: 对于没有doctype声明的页面里可以使用  document.body.scrollTop 来获取 scrollTop高度 : ...

  8. 关于scrollTop为0以及解决方法

    一.当有DOCTYPE声明的时候, <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

  9. 聊天窗口内容滚动到底部的方法scrollTop和scrollIntoView

    测试内容样式: <style type="text/css">#container{overflow-y:auto; overflow-x:hidden; height ...

最新文章

  1. L-SNET:从区域定位到尺度不变的医学图像分割
  2. +1.1向量 链表 数组
  3. [CF460E]Roland and Rose
  4. jsp中未登录用户也可以浏览页面的功能实现代码
  5. RequestMapping注解的作用
  6. centos php.ini redis,CentOS下安装Redis及Redis的PHP扩展
  7. 面向对象语言的技术特点
  8. WinSock I/O 模型 -- WSAEventSelect 模型
  9. egret 变量_egret性能优化总结
  10. Tablestore + Blink实战:交易数据的实时统计
  11. BZOJ2693:JZPTAP——题解
  12. 常用的Linux操作命令
  13. Extjs图书管理系统源码 智能化图书管理系统源码
  14. Spring(16) 获得bean的id
  15. 整理几款实用javascript富文本编辑器
  16. VS code Markdown Preview Enhanced 预览白色改为黑色
  17. docker命令push,pull等设置代理
  18. 银行卡号- 查询银行卡信息
  19. PHP上传Excel文件
  20. n+1天 吾日三省吾身

热门文章

  1. 前端百题斩【024】——我从浏览器控制台看到了五种存储方式
  2. 基于视频编码器的直播参数设置的图文教程
  3. 项目经理如何提升个人决策能力?
  4. 关于使用 FLAG_HOMEKEY_DISPATCHED 标志在应用层截获 HOME 按键的说明
  5. 武汉科技大学计算机课程表,武汉科技大学城市学院课程表(本科).doc
  6. 小程序购物车之加入购物车
  7. 面对10亿用户流量,餐饮商家如何打破运营僵局
  8. [ERROR]:用户“U1”创建失败
  9. 如何将光盘制作为iso文件
  10. 苹果关闭了iOS13.3系统的更新/屏蔽iOS13系统更新方法/官方爆料新款iPhone无刘海...