VUE 滚动到指定区域scrollIntoView

news2025/1/19 21:50:13

背景:当前 VUE 页面数据量很大,右侧出现滚动条, 进入该页面,页面定位到指定区域;

 项目要求: 进入页面,定位到指定行(红色标记)

直接看效果:

代码demo:

<template>
  <div>
    <p style="height: 300px">fkahfkahfha</p>
    <p style="height: 300px">fkahfkahfha</p>
    <p style="height: 300px">fkahfkahfha</p>
    <p style="height: 300px">fkahfkahfha</p>
    <p style="height: 300px">fkahfkahfha</p>
    <p style="height: 300px">fkahfkahfha</p>
    <p style="height: 300px">fkahfkahfha</p>
    <p style="height: 300px">fkahfkahfha</p>
    <p style="height: 300px">fkahfkahfha</p>
    <div class="stackTrace error-detail" ref="stackTraceContainer">
      <div
        v-for="(line, index) in formattedAdvice"
        :key="index"
        class="code-line"
        v-html="line"
        ref="codeLines"
      ></div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentBugInfo: {
        advice: `c
// example1.c
// memory-leaks error
#include <stdlib.h>

int main(void) {
    for (int i = 0; i < 99999999; i++) {
        char *buffer = (char *)malloc(1024 * sizeof(char));  // 分配动态内存
        // ...
        // free(buffer);  // 内存泄漏
    }
    return 0;
}
},

// example2.cpp
// memory-leaks error
int main() {
  char *buffer = new char[1024];
  // ...
  buffer = new char[2048];  // 指针指向新的缓冲区,一开始分配的缓冲区无法访问,导致内存泄漏
  // ...
  delete[] buffer;
  return 0;
}

// example2.cpp
// memory-leaks error
int main() {
  char *buffer = new char[1024];
  // ...
  buffer = new char[2048];  // 指针指向新的缓冲区,一开始分配的缓冲区无法访问,导致内存泄漏
  // ...
  delete[] buffer;
  return 0;
}
`,
        errorLine: 26, // 假设错误行号是6
      },
    };
  },
  computed: {
    formattedAdvice() {
      const lines = this.currentBugInfo.advice.split("\n");
      // 为特定行添加红色样式
      const highlightedLine = `<span style="color: red;">${lines[5]}</span>`;
      // 替换特定行,注意行号是从0开始的,所以是 errorLine - 1
      lines[this.currentBugInfo.errorLine - 1] = highlightedLine;
      // 使用 join 将数组重新组合为字符串,并在行之间添加换行符
      return lines.map((line, index) => {
        return index < lines.length - 1 ? line + "\n" : line;
      });
    },
  },
  mounted() {
    this.scrollToErrorLine();
  },
  methods: {
    scrollToErrorLine() {
      this.$nextTick(() => {
        // 定位到特定行的DOM元素
        const errorLineElement =
          this.$refs.stackTraceContainer.children[
            this.currentBugInfo.errorLine - 1
          ];
        console.log("获取到什么", errorLineElement);
        // 将该行滚动到可见区域的中间位置--我在当前demo页面是可以定位到红色错误行的
        // 但是项目上,一直有为题,最后给滚动加个定时器解决了
        // errorLineElement.scrollIntoView({
        //   behavior: "smooth",
        //   block: "center",
        // });
        // 添加定时器
        setTimeout(() => {
          errorLineElement.scrollIntoView({
            behavior: "smooth",
            block: "center",
          });
        }, 1000);
      });
    },
  },
};
</script>
<style scoped>
.stackTrace {
  font-family: FiraCode, PingFang SC, Microsoft YaHei;
  overflow: auto;
  box-sizing: border-box;
  border-radius: 3px;
  white-space: pre-wrap; /* css3.0 */
  white-space: -moz-pre-wrap; /* Firefox */
  white-space: -pre-wrap; /* Opera 4-6 */
  white-space: -o-pre-wrap; /* Opera 7 */
  word-wrap: break-word; /* Internet Explorer 5.5+ */
  word-break: break-all;
  font-size: 14px;
  /* color: #fff; */
  line-height: 24px;
  overflow-y: auto;
  overflow-x: hidden;
}
.error-detail {
  max-height: 400px;
  overflow: auto;
  font-weight: 400;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1682102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

堆的概念及结构

目录 堆的性质&#xff1a; 堆的实现 堆向下调整算法 堆的创建 堆的插入 堆的删除 堆的应用 堆排序 对比冒泡的优势&#xff1a; 代码 头文件 源文件 如果有一个关键码的集合K { &#xff0c; &#xff0c; &#xff0c;…&#xff0c; }&#xff0c;把它的所有元…

操作系统磁盘管理类问题

例题&#xff1a;在磁盘上存储数据的排列方式会影响1/0服务的总时间。假设每个磁道被划分成10个物理块&#xff0c;每个物理块存放1个逻辑记录。逻辑记录R1,R2....R10存放在同一个磁道上&#xff0c;记录的排列顺序如下表所示&#xff1a; 假定磁盘的旋转速度为10ms/周&#xf…

问界新M5交付,「975」组合站稳中国豪华智电定位

‍作者 |老缅 编辑 |德新 5月15日&#xff0c;问界新M5已正式开启全国用户交付。从网传图片可以看到&#xff0c;华为余承东以及赛力斯AITO问界BU总裁何利扬亲自出席了首批交车仪式。 4月23日&#xff0c;在不到1个月前&#xff0c;新M5发布。新M5共推出三款车型&#xff1a; …

Pikachu 靶场敏感信息泄露通关解析

前言 Pikachu靶场是一种常见的网络安全训练平台&#xff0c;用于模拟真实世界中的网络攻击和防御场景。它提供了一系列的实验室环境&#xff0c;供安全专业人士、学生和爱好者练习和测试他们的技能。 Pikachu靶场的目的是帮助用户了解和掌握网络攻击的原理和技术&#xff0c;…

你好 GPT-4o!

你好 GPT-4o&#xff01; OpenAI公司宣布推出 GPT-4o&#xff0c;这是OpenAI的新旗舰模型&#xff0c;可以实时对音频、视觉和文本进行推理。 GPT-4o&#xff08;“o”代表“o​​mni”&#xff09;是迈向更自然的人机交互的一步——它接受文本、音频、图像和视频的任意组合作…

财富加速器!AI智能无人直播,矩阵操作引领您卖货、卖团购券、拓客,助力财富梦想实现!

财富加速器&#xff01;AI智能无人直播&#xff0c;矩阵操作引领您卖货、卖团购券、拓客&#xff0c;助力财富梦想实现&#xff01; 在当今数字化时代&#xff0c;AI智能技术正以惊人的力量催生新的商机&#xff0c;为经济增长注入源源不断的动力。如果您渴望实现财富梦想&…

go语言数组与切片

1.数组 数组 类型名是[n]elemetType&#xff0c;其中n是数组长度&#xff0c;elementType是数组元素类型。比如一个包 含2个int类型元素的数组类型可表示为[2]int。 数组一般在创建时通过字面量初始化&#xff0c;单独声明一个数组类型变量而不进行初始化是没有意义的。 packa…

Linux-CentOS-7忘记密码-修改登录密码图文详解

Linux-CentOS-7忘记密码-修改登录密码图文详解 1.重启系统&#xff1a; 在登录界面&#xff0c;选择要登录的用户并点击"Power"按钮&#xff0c;然后选择"Restart"或"Reboot"重新启动系统。 在系统启动时持续按下 “e” 键进入编辑模式。 2…

人工智能到底是什么玩意儿?

说实话&#xff0c;每次听到“人工智能”这个词&#xff0c;我都感觉像是在听天书一样。它似乎总是被包裹在一堆高大上的术语和概念里&#xff0c;让人摸不着头脑。但今天&#xff0c;我决定挑战一下自己&#xff0c;把这个问题搞个明白&#xff01; 首先&#xff0c;我得承认&…

通过gen_compile_commands.py产生compile_commands.json文件的方法

大家在使用vscode查看linux源代码时&#xff0c;会有很多飘红处&#xff0c;而且函数的跳转非常不方便。所以linux给了一个脚本gen_compile_commands.py&#xff0c;此脚本类似ctags这样&#xff0c;产生相应的关联之类的数据库&#xff0c;方便函数及文件的跳转等等。非常好。…

每日一练 2024.5.16 (补 2024.5.15)

题目&#xff1a; 给定一个 正整数 数组 beans &#xff0c;其中每个整数表示一个袋子里装的魔法豆的数目。 请你从每个袋子中 拿出 一些豆子&#xff08;也可以 不拿出&#xff09;&#xff0c;使得剩下的 非空 袋子中&#xff08;即 至少还有一颗 魔法豆的袋子&#xff09;…

Docker mysql主从同步

1. 在主节点注册一个账号&#xff0c;用于子节点访问主节点 #mysql 1主2从&#xff0c;先创建主节点 ,注意 \ 后面不要带空格 docker run --name mysql-m \ -v /usr/local/mysql/data:/var/lib/mysql \ -v /usr/local/mysql/conf:/etc/mysql/conf.d \ -v /usr/local/mysql/log:…

20231911 2023-2024-2 《网络攻防实践》实践九报告

1.实践内容 1.1 缓冲区 缓冲区是内存空间的一部分&#xff0c;在内存中预留了一定的存储空间&#xff0c;用来暂时保存输入和输出等I/O操作的一些数据&#xff0c;这些预留的空间就叫做缓冲区。 1.2 shellcode shellcode是一段用于利用软件漏洞而执行的代码&#xff0c;也可以…

哪款桌面便签app能帮助我提升工作效率

作为上班族&#xff0c;我们每天都要处理大量的工作事项&#xff0c;从策划方案到处理邮件&#xff0c;每一个环节都需高效且有条不紊。在这样的工作环境下&#xff0c;提升效率显得尤为重要。而选择一款优秀的桌面便签app&#xff0c;无疑是提高工作效率的关键。 桌面便签app…

6-10 阶乘计算升级版

void Print_Factorial ( const int N ) {if(N<0){printf("Invalid input");return;} int nN;int a[10000]{};a[0]1; //0和1的阶乘都是1&#xff0c;同时又是用该个位去&#xff0c;所以初始化为1&#xff1b;int i,j;int len0;//当前数组所占的最大下标in…

多客开源】游戏陪玩系统,游戏陪玩源码,游戏陪玩语音社交源码运营版游戏陪玩平台源码/tt语音聊天/声优服务/陪玩系统源码开黑/约玩源码

介绍 我们针对陪玩app源码市场的发展趋势&#xff0c;整合市面上主流陪玩app应用功能&#xff0c;自主开发了多客陪玩系统源码&#xff0c;并可为客户提供全部原生陪玩源码&#xff0c;进行二次开发&#xff0c;打造适用于线上游戏陪玩、语音聊天、心理咨询、情感陪伴等业务场…

NOC初赛成绩,你们都查到了吗?

NOC大赛部分编程赛道要开始复赛了&#xff0c;2024信息素养大赛初赛及NOC复赛这篇就够了&#xff01;初赛结束后&#xff0c;很多家长和学生还没有查到是否晋级复赛&#xff0c;因为网站卡的出现了各种问题&#xff0c;主要集中在打不开&#xff0c;验证码错误等&#xff0c;根…

【数据分析实战】华住与锦江市场布局与未来趋势解析Python数据分析采集爬虫

文章目录 引言数据采集和展示数据采集数据预处理 数据分析与结果国内门店数量对比结果可视化结果分析 酒店平均房间数对比Code结果可视化结果分析 近六年开店数量对比结果可视化结果分析 写在最后 引言 随着旅游经济的持续发展&#xff0c;中国酒店行业正迅速壮大&#xff0c;…

基于51单片机的非接触式无线红外测温

基于51单片机的无线红外测温 &#xff08;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.采用红外温度传感器测温并用LCD1602显示&#xff1b; 2.按键为启动按键、保存按键、显示数据按键&#xff0c;可以实现对温度数值的控制…

InnoDB 事务处理机制

文章目录 前言1. 事务处理挑战1.1 事务机制处理的问题1.2 并发事务带来的问题 2. InnodDB 和 ACID 模型2.1 Innodb Buffer Pool2.2 Redo log2.3 Undo log2.4 应用案例 3. 隔离级别和锁机制3.1 事务隔离级别3.1.1 READ UNCOMMITTED3.1.2 READ COMMITTED3.1.3 REPEATABLE READ3.1…