原文关注公众号,后台里留言可进行提问,可在后台留言向作者提问解答问题!

https://mp.weixin.qq.com/s?__biz=Mzg3NTAzMzAxNA==&mid=2247484254&idx=1&sn=361bbb2113be3eeda3802f0a805c5705&chksm=cec6fb87f9b1729174e3ae66bf9693207386256c964499c098fb8a6cc14b4ba266bc271073a3&token=689492939&lang=zh_CN#rd

方法1:在路由守卫中处理路由滚动

安装vue-router

npm install vue-router

2. 然后,在你的项目中配置 Vue Router。例如,在 src/router/index.js 文件中

import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from '../views/Home.vue';
import About from '../views/About.vue'; Vue.use(VueRouter); const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
component: About
}
]; const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
}); export default router;

3.创建目标组件并添加目标元素
假设我们想在 About.vue 组件中滚动到某个特定的位置。我们可以在 About.vue 中添加一个具有唯一 id属性的元素

<template>
<div>
<h1>About Page</h1>
<!-- 为了演示滚动效果,添加高度 -->
<div style="height: 1000px;">
Scroll down to see the target element.
</div>
<!-- 滚动到目标位置 -->
<div id="targetElement">
This is the target element.
</div>
</div>
</template> <script>
export default {
name: 'About',
mounted() {
// 这里可以添加一些组件挂载后的逻辑,但滚动通常是在路由导航守卫中处理
}
};
</script> <style scoped>
/* 添加一些样式以改善视觉效果 */
</style>

4.在路由导航守卫中处理滚动

为了实现滚动到指定位置,我们需要在路由导航守卫中处理滚动逻辑。可以在 src/router/index.js 中添加滚动行为:

import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from '../views/Home.vue';
import About from '../views/About.vue'; Vue.use(VueRouter); const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
component: About,
// 可以在路由配置中添加 meta 字段来存储滚动信息
meta: {
scrollToTarget: true // 标记该路由需要滚动到目标位置
}
}
]; const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes,
scrollBehavior(to, from, savedPosition) {
if (to.meta.scrollToTarget) {
return new Promise((resolve, reject) => {
setTimeout(() => {
// 获取目标元素
const targetElement = document.querySelector('#targetElement');
if (targetElement) {
// 滚动到目标位置
targetElement.scrollIntoView({ behavior: 'smooth' });
}
resolve();
}, 0); // 使用 setTimeout 确保 DOM 更新完成
});
} else {
// 如果没有特定要求,则恢复之前的位置或滚动到顶部
return savedPosition || { x: 0, y: 0 };
}
}
}); export default router;

5.触发路由导航

最后,在你的 Home.vue 或其他组件中触发路由导航:

<template>
<div>
<h1>Home Page</h1>
<button @click="goToAbout">Go to About Page</button>
</div>
</template> <script>
export default {
name: 'Home',
methods: {
goToAbout() {
this.$router.push({ name: 'About' });
}
}
};
</script>

方法2: 在页面中处理滚动至指定位置

1. 创建 home.vue , about.vue 页面

2. 在home.vue跳转到about.vue页面

this.$router.push({
path: "/about"
});

3. 跳转到about页面后,在about页面获取指定元素距离顶部的距离

<template>
<div>
<!-- 为了演示滚动效果,添加高度 -->
<div style='height:1000px'>div1</div>
<div id='div2' class='id2'>div2</div>
</div>
</template>
<script>
export default {
name: "about",
mounted() {
this.setScrolltop();
},
methods: {
setScrolltop(){
let time=setTimeout(()=>{
this.$nextTick(()=>{
let top=0;
let targetElement=document.getElementById("id2");
if(targetElement){
// 获取元素距离顶部的距离
top=targetElement.offsetTop;
}
if(top>0){
// 滚动到指定位置
window.scrollTo({
top: top,
behavior: 'smooth'
});
}
clearTimeout(time);
time=null;
})
},1000);
}
}
}
</script>

vue-cli 跳转到页面指定位置的更多相关文章

  1. html锚点 点击跳转到页面指定位置

    本来是在看阮大神写的ajax教程,突然发现点击目录文字会跳转到相对应的文本内容,于是乎激发了我的兴趣. 这个究竟怎么做的,刚开始看的时候一知半解,找度娘就是:"点击跳转到页面指定位置&quo ...

  2. jQuery跳转到页面指定位置

    @参考博客 var t = $("#id").offset().top;// 获取需要跳转到标签的top值 //$(window).scrollTop(t);// 跳转到指定位置 ...

  3. HTML实现跳转到页面指定位置

    <a href="#page1">跳转到页面1</a> <a href="#page2">跳转到页面2</a> ...

  4. 通过href简单实现单击a链接跳转到页面指定位置

    在页面中点击a标签后,要使其跳到页面里面相应的地方,方法很简单,就是在a标签里面href中的内容和你要跳到这个区域的id同名即可,例如: <a href="#ppp" tar ...

  5. html js点击按钮滚动跳转定位到页面指定位置(DIV)的方法代码

    一:通过html锚点实现滚动定位到页面指定位置(DIV):    如果我们要点击实现跳转的地方是一个html锚点,也就是点击一个A标签超链接实现跳转,可以把A标签的href属性直接指向跳转指定位置的d ...

  6. coolite 获取新的页面链接到当前页面指定位置Panel的运用

    如下图所示,点击温州市文成县之前,右边是一片空白,点击后生成新的页面 html运用到了coolite的Panel控件 <Center> <ext:Panel ID="Pan ...

  7. ScrollTo:实现平滑滚动到页面指定位置

    ScrollTo:实现平滑滚动到页面指定位置 ScrollTo是一款基于jQuery的滚动插件,当点击页面的链接时,可以平滑地滚动到页面指定的位置.适用在一些页面内容比较多,页面长度有好几屏的场合,本 ...

  8. html页面标记 点击目录跳转到页面相应位置 简易回到顶部

    html页面标记 点击目录跳转到页面相应位置 简易回到顶部  参考博客:

  9. vue 点击元素滚动到指定位置(滑动到指定位置对应标签自动选中)

    一:各个模块不相同情况 1.内容部分<div class="anchor"> <div v-for="(item,index) in anchors&q ...

  10. jquery 跳转到当前页面指定位置

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. 模拟实现FutureTask

    1.背景 面试官问,,假设让你编写一个FutureTask,你的思路是..... 2.代码 2.1.GuardedObject对象 package com.common; /** * @author ...

  2. 图表全能王(ChartStudio) 上架VisionPro!

    图表全能王(ChartStudio) - 终极图表制作工具!支持条形图.折线图.面积图.柱形图.条形图.饼图.玫瑰图.雷达图.牛肉图.风琴图.旭日图.桑基图等图表. https://apps.appl ...

  3. Apache DolphinScheduler:深入了解大数据调度工具

    一.海豚调度介绍 Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统.适用于企业级场景,提供了一个可视化操作任务.工作流和全生命周期数据处理过程的解 ...

  4. Java设计模式之单例模式 通俗易懂 超详细 【内含案例】

    单例模式 推荐 Java 常见面试题 什么是单例模式 ? 确保程序中一个类只能被实例化一次,实现这种功能就叫单例模式 单例模式的好处是什么 ? 方便控制对象 节省资源减少浪费 怎么实现单例模式 ? 构 ...

  5. FFmpeg开发笔记(四十八)从0开始搭建直播系统的开源软件架构

    ​音视频技术的一个主要用途是直播,包括电视直播.电脑直播.手机直播等等,甚至在线课堂.在线问诊.安防监控等应用都属于直播系统的范畴.由于直播系统不仅涉及到音视频数据的编解码,还涉及到音视频数据的实时传 ...

  6. OpenPCDet为KITTI数据集生成数据信息出现错误TypeError: load() missing 1 required positional argument: ‘Loader‘的解决方案

    OpenPCDet为KITTI数据集生成数据信息出现错误 TypeError: load() missing 1 required positional argument: 'Loader' 通过查阅 ...

  7. 使用 nuxi add 快速创建 Nuxt 应用组件

    title: 使用 nuxi add 快速创建 Nuxt 应用组件 date: 2024/8/28 updated: 2024/8/28 author: cmdragon excerpt: 通过使用 ...

  8. C语言浮点数转字符串实现函数

    C语言浮点数转字符串可用库函数sprintf,此处为编写的简单函数. 小数部分最多显示六位. pOut:输出字符串缓冲区 f:浮点数值 isize:输出字符串缓冲区大小 char * Funftoa( ...

  9. Openstack-Train( 一)基础环境

    openStack-train 搭建部署 当面对KVM集群的时候,我们对KVM的管理以及宿主机的管理就会遇到很大的难度,例如: 查看每一个宿主机有多少台KVM虚拟机? 查看每一个宿主机资源信息,每一个 ...

  10. java基础 -线程(基础)的 笔记

    581,多线程机制 因为需要敌人的坦克可以自由移动并发射子弹,我们的坦克可以移动并发射子弹,这些要用到线程的知识. 根据JConsole监控线程执行情况,发现,主线程执行完了,子线程还没有执行完,并不 ...