vue3 页面滚动

  • 页面使用overflow:auto不会进行影响
  • 页面滚动的两种情况
    1、首页滑动到一定的距离,点击跳转页面,点击返回键(不是重新跳转过来的奥),首页的滚动距离还是之前滚动的距离,不变
const pageEle = ref(null);
const data = reactive({
    scrollTop: 0,
});
onMounted(() => {
            // 首页滚动到当前的某个位置,跳转页面在返回后还在当前的位置
            pageEle.value.addEventListener('scroll', (e) => {
                // console.log('滚动高度', e.target.scrollTop);
                data.scrollTop = e.target.scrollTop;
            });
            router.beforeEach((to, from, next) => {
                console.log('from', from);
                if (from.path) {
                    setTimeout(() => {
                        pageEle.value.scrollTop = data.scrollTop;
                    }, 0);
                }

                next();
            });
        });
        onUnmounted(() => {
            pageEle.value.removeEventListener('scroll', (e) => {
                data.scrollTop = e.target.scrollTop;
            });
        });
  • pageEle 是当前首页的跟标签,然后监听滚动的距离进行保存,返回的时候进行滚动
    2、首页点击跳转页面滚动的特定的某个元素
    const productEle = ref(null);
    const product3 = ref(null);            
        watch(
            () => route.query,
            (newV) => {
                console.log('new', newV);
                if (newV.hasOwnProperty('num')) {
                    data.num = newV.num;
                    console.log(data.num, 'num');
                } else if (newV.hasOwnProperty('type')) {
                    //首页点击后页面滚动到某一个地方
                    data.num = 0;
                    if (newV.type == 3) {
                        setTimeout(() => {
                            productEle.value.scrollTop = product3.value.offsetTop - 50;
                        }, 50);
                    }
                }
            },
            {
                deep: true,
                immediate: true,
            }
        );
  • 首先是当前页面的根标签ref进行获取,当前要滚动的元素标签ref进行获取,然后使用watch进行监听(要使用深度监听,第一次跳转过来不会触发,加定时器是需要ref获取元素的高度,否则获取不到)

  • 目前遇到的两个,希望可以帮助到你们!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Vue2 1.1 模板语法 1.1.1 模板的理解 html 中包含了一些 JS 语法代码,语法分为两种,分别...
    Cola_Mr阅读 3,749评论 0 1
  • vue去哪网跟学笔记 记录学习点滴 1. 初始化项目 1.1 手机显示配适 minimum-scale=1.0,m...
    noobakong阅读 6,826评论 0 16
  • 由于简书没有目录的功能,为了更加清晰的学习,我制作了一个目录地址如下:学习Vue目录 链接地址: https:/...
    读书的鱼阅读 13,422评论 13 249
  • 在传统的 Web 开发过程中,当你需要实现多个站内页面时,以前你需要写很多个 html 页面,然后通过 a 标签来...
    硅谷干货阅读 6,997评论 0 1
  • client,page和screen的区别? clientX,clientY是触摸点相对于viewport视口x,...
    change_22fa阅读 5,659评论 1 1