vue中記錄滾動(dòng)條位置的兩種方法
1、方法一
在點(diǎn)擊的時(shí)候記錄滾動(dòng)條位置,存入本地
再次進(jìn)入該路由讀取滾動(dòng)跳位置
1、1 跳轉(zhuǎn)時(shí)路由存入scroll 如果要有多個(gè)頁面,可以把名稱也存進(jìn)去,這里默認(rèn)一個(gè)頁面
methods: {
go() {
console.log(document.documentElement.scrollTop)
localStorage.setItem("scroll", document.documentElement.scrollTop)
this.$router.push({path: '/'})
}
}1、2 讀取scroll位置 再次進(jìn)入該路由時(shí)從本地錄取scroll位置
利用scrollBehavior ,在
router/index.js中,配置路由中的scrollBehaviors事件
const router = new VueRouter({
mode: 'hash',
routes,
scrollBehavior(to, from){
if(to.name==='fatherSlot'){ //name為路由名字
return {x:0, y: parseInt(localStorage.getItem('scroll'))}//讀取本地的scroll
}
console.log("to",to,"from",from)
}
})2、方法二
利用
vue的keep-alive, 使用緩存機(jī)制來記錄滾動(dòng)條位置
但是有個(gè)缺點(diǎn),頁面刷新后就不記錄了,但是簡單高效
2、1 配置需要緩存的路由 緩存pageA,pageB,里面代碼都一樣,如演示圖一樣。pageA,pageC為組件的名字.
html
<keep-alive :include="['pageA','pageC']">
<router-view/>
</keep-alive>2、2 在路由內(nèi)記錄滾動(dòng)位置
javascript
data() {
return {
curScrollTop: 0 //記錄滾動(dòng)條位置對(duì)象
}
},
//此鉤子函數(shù)會(huì)反復(fù)觸發(fā),是keep-alive特有的鉤子函數(shù),取
activated() {
document.documentElement.scrollTop = this.curScrollTop || 0
},
//路由離開時(shí)的鉤子函數(shù),存
beforeRouteLeave (to, from, next) {
this.curScrollTop = document.documentElement.scrollTop || 0
next()
},總結(jié)
到此這篇關(guān)于vue中記錄滾動(dòng)條位置的兩種方法的文章就介紹到這了,更多相關(guān)vue記錄滾動(dòng)條位置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue項(xiàng)目中運(yùn)用webpack動(dòng)態(tài)配置打包多種環(huán)境域名的方法
本人分享一個(gè)vue項(xiàng)目里,根據(jù)命令行輸入不同的命令,打包出不同環(huán)境域名的方法。需要的朋友跟隨小編一起看看吧2019-06-06
vue3.0如何修改瀏覽器標(biāo)題(靜態(tài))
這篇文章主要介紹了vue3.0如何修改瀏覽器標(biāo)題(靜態(tài)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
vue中數(shù)據(jù)字典dicts的簡單說明和用法介紹
這篇文章主要給大家介紹了關(guān)于vue中數(shù)據(jù)字典dicts的簡單說明和用法的相關(guān)資料,如果您想在Vue中使用字典查詢,您可以使用Vue的計(jì)算屬性和方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
Vue3點(diǎn)擊側(cè)邊導(dǎo)航欄完成切換頁面內(nèi)組件全過程(WEB)
寫頁面的時(shí)候都會(huì)用到一些導(dǎo)航欄、點(diǎn)擊不同的部分切換不同的頁面,下面這篇文章主要給大家介紹了關(guān)于Vue3點(diǎn)擊側(cè)邊導(dǎo)航欄完成切換頁面內(nèi)組件的相關(guān)資料,需要的朋友可以參考下2023-06-06

