vue怎么获取元素位置,并设置元素的位置

1,130 阅读1分钟

重点放头部: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))
       }
   }
}
业务场景:同一个页面A(列表组件)内包含两个组件B、C ,且A为列表,当切换B、C的时候列表设置隐藏,需要记录页面位置:可以直接给页面A设置滚动即可。