滚动行为
什么是路由的滚动行为
当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样
注意: 这个功能只在 HTML5 history 模式下可用。在这个模式下我们需要启动一个服务
我们用scrollBehavior 方法来做路由滚动
scrollBehavior 方法接收 to 和 from 路由对象。第三个参数 savedPosition 当且仅当 popstate 导航 (通过浏览器的 前进/后退 按钮触发) 时才可用
下面我们做一个小案例来了解一下
效果
<div id="app"><h1>滚动行为</h1><ul><li><router-link to="/">首页</router-link></li><li><router-link to="/foo">导航</router-link></li><li><router-link to="/bar">关于</router-link></li><li><router-link to="/bar#an1">红色页面</router-link></li><li><router-link to="/bar#an2">蓝色页面</router-link></li></ul><router-view></router-view>
</div>
<script>var Home = {template:"<div>home</div>"}var Foo = {template:"<div>foo</div>"}var Bar = {template:`<div>bar<div style="height:500px;background: yellow;"></div><p id="an1" style="height:500px;background: red;">红色页面</p><p id="an2" style="height:300px;background: blue;">蓝色页面</p></div>`}var router = new VueRouter({mode:"history",//控制滚动位置scrollBehavior (to, from, savedPosition) {//判断如果滚动条的位置存在直接返回到当前位置,否者返回到起点if (savedPosition) {return savedPosition} else {if (to.hash) {return {selector: to.hash}}}},routes:[{path:"/",component:Home},{path:"/foo",component:Foo},{path:"/bar",component:Bar}]});var vm = new Vue({el:"#app",router});
</script>
vue滚动小案例
https://github.com/Besmall/vu...
https://Besmall.github.io/vue...