Router-link 跳转页面回到头部问题

本文探讨了在Vue项目中使用Vue Router-link进行页面跳转时遇到的页面返回顶部的问题,并提供了解决方案。通过在vue-router配置中添加特定代码,可以确保页面跳转后保持滚动位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Router-link 跳转页面回到头部问题

在vue-router配置文件中添加如下代码

scrollBehavior (to, from, savedPosition) {
      return { x: 0, y: 0 }
    }

案例如下

export default () => {
  return new Router({
    mode: 'history',
    base: process.env.BASE_URL,
    routes,
    scrollBehavior (to, from, savedPosition) {
      return { x: 0, y: 0 }
    }
  })
}
<template> <div> <!-- 头部开始 --> <div class=“header-wrapper”> <div class=“top-header”> <div class=“container”> <!-- Logo区域 --> <router-link to=“/” class=“logo”> <div class=“logo-icon”> <font-awesome-icon :icon=“[‘fas’, ‘cloud’]” class=“cloud-icon” /> <font-awesome-icon :icon=“[‘fas’, ‘book-open’]” class=“book-icon” /> </div> <span class=“logo-text”>云课视界</span> </router-link> <!-- 主导航 --> <div v-if="data.user.role==='STUDENT'"> <nav class="main-nav"> <router-link to="/front/home" class="nav-item">首页</router-link> <router-link to="/courses" class="nav-item">视频课程</router-link> <router-link to="/live" class="nav-item">直播课程</router-link> </nav> </div> <div> <nav class="main-nav" v-if="data.user.role==='TEACHER'"> <router-link to="/front/home" class="nav-item">首页</router-link> <router-link to="/courses" class="nav-item">发布课程</router-link> <router-link to="/live" class="nav-item">我的课程</router-link> </nav> </div> <!-- 右侧功能区 --> <div class="right-area"> <div class="search-box"> <font-awesome-icon :icon="['fas', 'search']" class="search-icon" /> <input type="text" class="search-input" placeholder="搜索课程..." @keyup.enter="handleSearch" > </div> <!-- 已登录状态显示用户信息 --> <div class="user-actions" v-if="data.user"> <el-dropdown> <div class="user-info"> <img v-if="data.user.avatar" :src="data.user.avatar" class="user-avatar" > <img v-else src="https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png" class="user-avatar" > <span class="username">{{ data.user.username }}</span> </div> <template #dropdown> <el-dropdown-menu> <el-dropdown-item @click="router.push('/front/person')">个人中心</el-dropdown-item> <el-dropdown-item @click="router.push('/front/updatePassword')">修改密码</el-dropdown-item> <el-dropdown-item @click="logout">退出登录</el-dropdown-item> </el-dropdown-menu> </template> </el-dropdown> </div> <!-- 未登录状态显示登录/注册 --> <div class="user-actions" v-else> <router-link to="/login" class="auth-link">登录</router-link> <span class="divider">|</span> <router-link to="/register" class="auth-link">注册</router-link> </div> </div> </div> </div> </div> </div> <!-- 头部结束–> <!-- 主要内容区域 --> <div class=“main-content”> <router-view @updateUser=“updateUser”></router-view> </div> </template> <script> import { FontAwesomeIcon } from ‘@fortawesome/vue-fontawesome’ import { library } from ‘@fortawesome/fontawesome-svg-core’ import { faCloud, faBookOpen, faSearch } from ‘@fortawesome/free-solid-svg-icons’ import { reactive } from ‘vue’; import { useRouter } from ‘vue-router’; library.add(faCloud, faBookOpen, faSearch) export default { name: ‘PlatformHeader’, components: { FontAwesomeIcon }, setup() { const router = useRouter(); const data = reactive({ user: JSON.parse(localStorage.getItem(‘xm-pro-user’)) || null }) const handleSearch = () => { const searchInput = document.querySelector('.search-input') if (searchInput.value.trim()) { console.log('搜索内容:', searchInput.value) } } const updateUser = () => { data.user = JSON.parse(localStorage.getItem('xm-pro-user')) || null; } return { data, router, handleSearch, updateUser, logout } } } </script>退出登录的时候如何退出到网页首页,给出logout函数
最新发布
03-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值