web端和uniapp移动端锚点链接跳转或者滚动

web端和uniapp移动端锚点链接跳转或者滚动

引言

前端在工作中,时不时会碰到锚点的需求,即要求点击某个元素之后,跳转到另一处或者滚动条移动到指定位置

web端

控制滚动条
document.body.scrollTop = 750

上述即标识滚动条会移动到距离顶部750px的地方

跳转到指定元素
document.getElementById("divId").scrollIntoView()

还可以使用a标签和window.location.hash,但是会造成URL更新导致页面刷新,不建议使用

uniapp的移动端

操作滚动条
this.$nextTick(function(){
    setTimeout(()=>{
        uni.pageScrollTo({
            scrollTop: 2000000,
            duration : 0
          })
      },50)
  })

但是这种方法一定要放在nextTick中触发,设置延时函数
在这里插入图片描述

跳转到指定元素
this.$nextTick(() => {
    setTimeout(() => {                          
        uni.createSelectorQuery().select("#tour").boundingClientRect(function(res) {
        //定位到你要的class的位置
            uni.pageScrollTo({
                scrollTop: res.top,
                duration: 0
            });
        }).exec()
      }, 50)
  })

uniapp基于小程序的技术,而小程序官方文档中是没有window对象的,而document是window的一个属性,
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NvxZiWd7-1639806756568)(https://math.jianshu.com/math?formula=%5Ccolor%7Bred%7D%7B%E6%89%80%E4%BB%A5%E4%B8%8D%E8%83%BD%E4%BD%BF%E7%94%A8document.getElementById%7D)],

因此使用uniapp的节点选择器
在这里插入图片描述

转载地址:如有侵权请联系本人删除
https://www.jianshu.com/p/45be10b3af00

你可能感兴趣的:(前端,javascript,vue.js)