重点放头部:scrollTop只能设置给已经设置滚动的父元素,即想给元素设置scrollTop,元素css必须有scroll-y:scroll属性;
业务场景:顶部有多个tab 其中一个有很长的列表,需要保存列表的位置(多个子组件在同一个父组件容器中)
1.parent父组件中设置keep-alive 缓存需要缓存的子组件list
<template>
<keep-alive include="list>
<component
:is="list"
<!--其他需要传递的参数-->
>
</component>
</keep-alive>
</template>
2.list.vue组件中
<template>
<div style="scroll-y:scroll" ref="scrollContainer" @scroll="scrollContainer">
</div>
</template>
export default{
data(){
return{
}
},
activated () {
//缓存的页面之后每次进来都会执行这个生命周期
let position = window.sessionStorage.getItem('position')
this.$refs.relatedClue.scrollContainer = position
},
methods:{
//滚动的时候记录页面位置
scrollContainer(){
window.sessionStorage.setItem('position',(this.$refs.scrollContainer.scrollTop))
}
}
}