vue-cli 跳转到页面指定位置
原文关注公众号,后台里留言可进行提问,可在后台留言向作者提问解答问题!
方法1:在路由守卫中处理路由滚动
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 跳转到页面指定位置的更多相关文章
- html锚点 点击跳转到页面指定位置
本来是在看阮大神写的ajax教程,突然发现点击目录文字会跳转到相对应的文本内容,于是乎激发了我的兴趣. 这个究竟怎么做的,刚开始看的时候一知半解,找度娘就是:"点击跳转到页面指定位置&quo ...
- jQuery跳转到页面指定位置
@参考博客 var t = $("#id").offset().top;// 获取需要跳转到标签的top值 //$(window).scrollTop(t);// 跳转到指定位置 ...
- HTML实现跳转到页面指定位置
<a href="#page1">跳转到页面1</a> <a href="#page2">跳转到页面2</a> ...
- 通过href简单实现单击a链接跳转到页面指定位置
在页面中点击a标签后,要使其跳到页面里面相应的地方,方法很简单,就是在a标签里面href中的内容和你要跳到这个区域的id同名即可,例如: <a href="#ppp" tar ...
- html js点击按钮滚动跳转定位到页面指定位置(DIV)的方法代码
一:通过html锚点实现滚动定位到页面指定位置(DIV): 如果我们要点击实现跳转的地方是一个html锚点,也就是点击一个A标签超链接实现跳转,可以把A标签的href属性直接指向跳转指定位置的d ...
- coolite 获取新的页面链接到当前页面指定位置Panel的运用
如下图所示,点击温州市文成县之前,右边是一片空白,点击后生成新的页面 html运用到了coolite的Panel控件 <Center> <ext:Panel ID="Pan ...
- ScrollTo:实现平滑滚动到页面指定位置
ScrollTo:实现平滑滚动到页面指定位置 ScrollTo是一款基于jQuery的滚动插件,当点击页面的链接时,可以平滑地滚动到页面指定的位置.适用在一些页面内容比较多,页面长度有好几屏的场合,本 ...
- html页面标记 点击目录跳转到页面相应位置 简易回到顶部
html页面标记 点击目录跳转到页面相应位置 简易回到顶部 参考博客:
- vue 点击元素滚动到指定位置(滑动到指定位置对应标签自动选中)
一:各个模块不相同情况 1.内容部分<div class="anchor"> <div v-for="(item,index) in anchors&q ...
- jquery 跳转到当前页面指定位置
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- Mongolia地区民间风俗的一些理解
声明:本文的内容为自己学习历史后的一些个人理解,其中内容的真实性并未考证. 总所周知,Mongolia地区有内外之分现在,但是以前均为我国领土,后来由于种种历史原因导致外Mongolia分离了出去,这 ...
- k8s批量操作
批量删除Evicted状态pod kubectl -n gitee get pods | grep Evicted |awk '{print$1}'|xargs kubectl -n gitee de ...
- 聊一聊SQL优化
晚上睡不着,脑子里总想着一些问题,试着写一写对于SQL查询优化的见解. 首先,数据库有自己的查询优化器,执行一条查询SQL优化器会选择最优的方式(不走索引.走索引.走哪个索引), 所以索引不是越多越好 ...
- CentOs7.3 配置基本信息查看
1.基本信息查看(命令行) [root@localhost home]# CPU个数: [root@localhost home]# grep 'physical id' /proc/cpuinfo ...
- 关于phpstudy小坑 经典数据库报错 1044
经典数据库报错 1044 权限问题 一个很经典的问题 使用的集成环境的phpstudy , 一直都挺好的 但是每次删除后不能创建同名的数据库 最后发现原来默认的只有一个库 在这个库下面 ...
- html 跳转到新的网址
更新window.location.href后面的值即可 文件名为 index.html <!DOCTYPE html> <html> <head> <met ...
- 在虚拟机CentOS中安装docker
公众号本文地址:在虚拟机CentOS中安装Docker 1.关闭防火墙 docker需要用到网络,所以需要关闭防火墙.进入管理员模式获得权限后进行关闭. su 关闭防火墙: systemctl dis ...
- SpringMVC:文件上传和下载
文件下载 ResponseEntity用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览器的响应报文 使用ResponseEntity实现下载文件的功能 @RequestMapping(& ...
- 【YashanDB知识库】ycm托管数据库时,数据库非OM安装无法托管
问题现象 ps -ef | grep yas 查看无yasom和yasagent进程,且在{数据库安装目录}/om/{数据库名称}的目录下没有conf.data.log等目录,确定数据库不是用yasb ...
- C++ std::shared_ptr自定义allocator引入内存池
当C++项目里做了大量的动态内存分配与释放,可能会导致内存碎片,使系统性能降低.当动态内存分配的开销变得不容忽视时,一种解决办法是一次从操作系统分配一块大的静态内存作为内存池进行手动管理,堆对象内存分 ...