当前位置: 首页 > news >正文

【react hook】umi获取虚拟dom元素 并点击按钮滚动到对应元素位置

const onPosiScroll = (idx) => {
    let labDom;
    let getDom = (clssNm, i) => {
      // 由于umi存在样式hash 因此不能直接通过样式字符串获取元素 需要从样式导入的styles变量里去获取指定className
      return document.querySelectorAll(`.${styles[clssNm]}`)[i];
    }
    switch(idx) {
      case 0: labDom = getDom('labelText', 1); break;
      case 1: labDom = getDom('labelHead', 0); break;
      case 2: labDom = getDom('labelHead', 1); break;
    }
    // console.log('dom===', labDom, labDom.clientHeight, labDom.clientTop, labDom.scrollHeight, labDom.scrollTop, labDom.offsetTop);
    if (!labDom) return;
    window.scrollTo({
      top: labDom.offsetTop, // offsetTop获取当前元素相对于其父元素的左上角位置的左上角位置,也就是说 需要观察其父元素是否是最高级容器,如果不是可能需要追加其他父元素的高度
      behavior: 'smooth',
    });
};

相关文章:

  • list深度拷贝转为JSON字符串,放到Redis
  • java计算机毕业设计社区老人健康服务跟踪系统源码+系统+数据库+lw文档+mybatis+运行部署
  • LeetCode_309_最佳买卖股票时机含冷冻期
  • Vue中使用lottie动画加载json文件
  • 炒股加杠杆方式有哪些
  • 23届秋招前端笔面经合辑(持续更新)
  • Docker实时查看日志命令
  • CSS 实现内阴影的方法
  • 聚N-乙烯基乙酰胺接枝聚苯乙烯微球PNVA-g-PSt/磺化聚苯乙烯/壳聚糖复合微球探究
  • docker官方历史版本下载地址
  • 5.9如何判断括号的合法性
  • org.yaml.snakeyaml.scanner.ScannerException: while scanning a simple key
  • 进程间通信机制原理
  • 分析入门 Python 股票量化交易的原因
  • Istio服务网格进阶③:基于Istio服务网格实现灰度发布机制
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • Angularjs之国际化
  • Apache Pulsar 2.1 重磅发布
  • CentOS7简单部署NFS
  • css的样式优先级
  • CSS中外联样式表代表的含义
  • java 多线程基础, 我觉得还是有必要看看的
  • laravel with 查询列表限制条数
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Mocha测试初探
  • mysql 数据库四种事务隔离级别
  • nginx 配置多 域名 + 多 https
  • Twitter赢在开放,三年创造奇迹
  • 从零开始在ubuntu上搭建node开发环境
  • 简单基于spring的redis配置(单机和集群模式)
  • 前端相关框架总和
  • 入门级的git使用指北
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用docker-compose进行多节点部署
  • NLPIR智能语义技术让大数据挖掘更简单
  • 从如何停掉 Promise 链说起
  • (3)(3.5) 遥测无线电区域条例
  • (十) 初识 Docker file
  • (四)JPA - JQPL 实现增删改查
  • (四)汇编语言——简单程序
  • (转)原始图像数据和PDF中的图像数据
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET基础篇——反射的奥妙
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • .sh 的运行
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)
  • [c++] 自写 MyString 类
  • [flask] flask的基本介绍、flask快速搭建项目并运行
  • [HDU 3555] Bomb [数位DP]
  • [JavaEE] 线程与进程的区别详解
  • [javaSE] GUI(Action事件)