vue中切换页面时让目标页面的滚动条自动滚动到顶部的方法

情景描述

  1. 页面 /a, 有输入框, 当输入框输入合适的值的时候, 不隐藏软键盘, 点击相应按钮直接跳到 /b
  2. 页面 /b, 页面本来内容很少, 没有滚动条的, 可是莫名的被下方的灰色区域顶到可视区上面, 内容被隐藏了一点, 但是手动拉回正常展示以后, 问题就不再重现

解决办法(针对单个页面这个问题的)

// 在/b页面, vue的mounted方法中, 写设置页面滚动条的这个方法
mounted() {
 // 切换页面时滚动条自动滚动到顶部
    window.scrollTo(0,0);
}

针对全部页面的话, 可以在路由的钩子函数中设置(main.js中)

// 这个方法我没有亲测, 是查网上资料的, 不过我觉得, 放在`router.beforeEach`更好
router.afterEach((to,from,next) => {
  window.scrollTo(0,0);
  // 或
  // window.scroll(0, 0);
});
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue 切换页面,通常可以使用 Vue Router 来进行页面路由的控制。你可以在每个页面组件设置不同的顶部导航栏,然后在路由配置指定每个页面对应的组件。 例如,你可以在 App.vue 设置一个统一的顶部导航栏组件,然后在每个页面组件设置不同的导航栏内容。在路由配置,指定每个页面对应的组件即可。 下面是一个简单的示例代码: ```html <!-- App.vue --> <template> <div> <TopNav /> <router-view /> </div> </template> <script> import TopNav from './components/TopNav.vue' export default { components: { TopNav } } </script> ``` ```html <!-- HomePage.vue --> <template> <div> <h1>Home Page</h1> </div> </template> <script> export default { data() { return { navTitle: 'Home' } }, mounted() { this.$emit('update-nav', this.navTitle) } } </script> ``` ```html <!-- AboutPage.vue --> <template> <div> <h1>About Page</h1> </div> </template> <script> export default { data() { return { navTitle: 'About' } }, mounted() { this.$emit('update-nav', this.navTitle) } } </script> ``` ```javascript // router.js import Vue from 'vue' import Router from 'vue-router' import HomePage from './views/HomePage.vue' import AboutPage from './views/AboutPage.vue' Vue.use(Router) const router = new Router({ routes: [ { path: '/', name: 'home', component: HomePage }, { path: '/about', name: 'about', component: AboutPage } ] }) router.afterEach((to, from) => { // 更新顶部导航栏标题 const navTitle = to.meta.navTitle || '' document.title = navTitle ? `${navTitle} - My App` : 'My App' }) export default router ``` 在上面的示例,HomePage.vue 和 AboutPage.vue 组件都设置了一个 navTitle 变量,用于指定该页面对应的顶部导航栏标题。在 mounted 钩子,通过调用 $emit 方法触发一个自定义事件,将当前页面的 navTitle 传递给父组件 App.vue。 在 App.vue ,通过引入 TopNav.vue 组件,将其放置在页面顶部。同,通过监听子组件触发的 update-nav 事件,将子组件传递过来的 navTitle 更新到顶部导航栏。 最后,在路由配置,通过 meta 属性指定每个页面对应的导航栏标题,然后在 router.afterEach 钩子更新页面标题。这样,在切换页面顶部导航栏的标题也会随之改变。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值