it编程 > 编程语言 > Javascript

前端滚动锚点三个常用方案(点击后页面滚动到指定位置)

38人参与 2025-02-14 Javascript

三个常用方案:

1.scrollintoview

把调用该方法的元素滚动到屏幕的指定位置,中间,底部,或者顶部

优点:方便,只需要获取元素然后调用

缺点:不好精确控制,只能让元素指定滚动到中间,顶部,底部,没法设置偏移

block可以设置为center,end,start等来控制在页面显示的位置。

注意的就是

<script setup>
import {onmounted, ref } from 'vue'
import {useroute }from 'vue-router'
const { query }= useroute();
const target = query.target
onmounted(()=>{
   document.getelementbyid(target)?.scrollintoview({
   block:'center'
  })
})
</script>
 
<template>
  <button>美妆</button>
  <button>数码</button>
  <button>美食</button>
  <button>家居</button>
  <button>黄金</button>
 <div class="home" id="home">
   // 五个楼层
   <div class="part" id="part1">美妆</div>
   <div class="part" id="part2">数码</div>
   <div class="part" id="part3">美食</div>
   <div class="part" id="part4">家居</div>
   <div class="part" id="part5">黄金</div>
 </div>
</template>
 
<style>
.home {
  width: 1000px;
  margin: 0 auto;
  height: 90vh;
  overflow-y: scroll;
}
.part {
  margin-top: 20px;
  border: 1px solid red;
  height: 600px;
}
.needdata {
  height: 600px;
}
</style>

2.scrollto

把可滚动元素滚动到指定x,y坐标优点:可以精确控制到具体多少px

缺点:得先获取到x,y坐标

需要注意的是,这个方法的调用者并不是要看到的元素,而是可滚动的元素。像方法一,调用scrollintoview方法的是五个楼层本身,但是如果是调

scrollto的话是调用他们的父级元素(id="home"的div盒子)它才是可滚动的元素.

<script setup>
import {onmounted, ref } from 'vue'
import {useroute }from 'vue-router'
const { query }= useroute();
const target = query.target
onmounted(()=>{
   const targetdom = document.getelementbyid(target);
   const targetrect = targetdom.getboundingclientrect();
   document.getelementbyid(home)?.scrollto(targetrect.x, targetrect.y - 100);
})
</script>

<template>
  <button>美妆</button>
  <button>数码</button>
  <button>美食</button>
  <button>家居</button>
  <button>黄金</button>
 <div class="home" id="home">
   <div class="part" id="part1">美妆</div>
   <div class="part" id="part2">数码</div>
   <div class="part" id="part3">美食</div>
   <div class="part" id="part4">家居</div>
   <div class="part" id="part5">黄金</div>
 </div>
</template>

3.scrollby 

滚动指定的x,y距离。也就是让他滚动一定距离,不指定坐标

优点:当我们只是做移动,而不是滚到某个指定的元素时

缺点:得自己算出多少距离

这个方法用的少就不举例了

最后:要注意的点,记住这么几个操作

1,如果是打开就滚动到指定位置,vue/react项目一定要在你页面数据渲染完成后滚动

2,如果不含有请求,记得在onmounted(vue),或者useeffect(react)中进行滚动操作,如果是页面滚动,可能还要在加一个小延迟(settimeout)

3,如果页面的数据是请求来的,请确保数据渲染完成后进行滚动

页面滚动是会记录上一次滚动状态的,在页面渲染好后又会滚回去。记录页面滚动这个现象一般只限于同步引入的组件,异步的不会(没有滚动记录)

总结 

到此这篇关于前端滚动锚点三个常用方案的文章就介绍到这了,更多相关前端滚动到指定位置内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

在前端中Proj4.js使用简单介绍及进阶应用

02-14

前端实现水印功能的几种方法及优缺点

02-14

在webview中如何跳回小程序步骤详解

02-14

前端防抖(Debounce)和节流(Throttle)的概念、区别、应用场景及实现方法

02-14

纯前端生成PDF(jsPDF)并下载保存或上传到OSS的代码示例

02-14

基于JavaScript+IntersectionObserver实现高性能图片懒加载

02-14

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论