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的一个属性,,
因此使用uniapp的节点选择器

你可能感兴趣的:(web端和uniapp移动端锚点的解决方法)