vue3手动设置滚动条位置自动定位功能

从B页面进行xx操作后需要跳转到A页面,并定位到AA职位,上图为A页面。
A页面的左侧是div,内层包裹List组件

给div定义ref=leftRef,在代码中写如下:
? function scrollTop() {
? ? if (leftRef.value) {
? ? ? console.log('99', leftRef.value);
? ? ? nextTick(() => {
? ? ? ? leftRef.value.scrollTop = 1000;
? ? ? ? // scrollBy(0, document.body.scrollWidth);
? ? ? });
? ? }
? }
onMounted(async () => {
? ? if (router.currentRoute.value.query.id) {
? ? ? positionChooseCode.value = router.currentRoute.value.query.id;
? ? ? positionStatusValue.value = router.currentRoute.value.query.id;
? ? }
? ? const positionId = router.currentRoute.value.query.positionId;
? ? if (!!positionId) {
? ? ? cStore.setPositionId(positionId);
? ? }
? ? console.log('mounted--positionId', positionId);
? ? await getPositionDictionary(positionChooseCode.value, '');
? ? await getDictionaries();
? ? scrollTop();
? });第一,需要等待数据渲染完成后,再调用scrollTop,设置scrollTop=1000,这样页面初始化滚动条位置会改变。
第二,找到当前职位的高度,也要等职位列表数据渲染完成后,获取
? ? console.log('positionList.value', positionList.value);
? ? rowItemId.value = item.id;
? ? //找到前面有多少个元素
? ? let index = positionList.value.findIndex((it) => it.id === rowItemId.value);
? ? console.log('找到前面有多少个元素', index + 1);
? ? num.value = index - 2;
获取当前职位,当前职位会有class==red的,通过class获取ele;
?const sortableEles = document.querySelectorAll('.red');
? ? ? console.log(sortableEles);
? ? ? let itemHeight = 0;
? ? ? if (sortableEles.length > 0) {
? ? ? ? const firstListItem = sortableEles[0];
? ? ? ? itemHeight = firstListItem.offsetHeight; // 获取元素的高度,包括内边距和边框
? ? ? ? console.log('第一个列表项的高度:', itemHeight);
? ? ? ? console.log(' num.value', num.value);
? ? ? }完整的scrollTop方法如下

总结:
滚动条要滚动起来
选中含有滚动条的元素,定义一个const leftRef = ref(null),在数据加载完成后设置leftRef.value.scrollTop
滚动条的位置
等待数据加载完后获取当前选中的元素,通过.offsetHeight获取元素的高度
到此这篇关于vue3手动设置滚动条位置自动定位功能的文章就介绍到这了,更多相关vue手动设置滚动条内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
vue history 模式打包部署在域名的二级目录的配置指南
这篇文章主要介绍了vue history 模式打包部署在域名的二级目录的配置指南 ,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-07-07
在使用uni-data-select插件时通过接口获取值赋给localdata失败的问题解决方案
在加载渲染时,调取接口请求的是一个异步的操作,在子组件拿到数据前就渲染了,才导致子组件watch没有监听到值的变化,下面给大家介绍在使用uni-data-select插件时通过接口获取值赋给localdata失败的问题,感兴趣的朋友一起看看吧2024-12-12
Vue-cli assets SubDirectory及PublicPath区别详解
这篇文章主要介绍了Vue-cli assets SubDirectory及PublicPath区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-08-08
详解vue+axios给开发环境和生产环境配置不同的接口地址
这篇文章主要介绍了详解vue+axios给开发环境和生产环境配置不同的接口地址,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-08-08


最新评论