为啥没有早点知道scrollIntoView!!!

前言

你是否遇到过类似的需求:需要在页面中实现锚点定位,确保进入页面时某个元素能够出现在可视区域内?点击列表某个元素自动滚动到视图中间?这类需求涉及处理元素与可视区域之间的关系,比如使用 scrollTop、scroll、监听滚动等方式实现。

今天发现一种最简单的方式:scrollIntoView

实现

原始阶段

  • 通过scroll、setTimeout实现

  • 问题:耗时、切换不够丝滑、占用任务队列

    (ps: 全靠硬算好吧~-~)

效果图

解放双手阶段

  • 通过scrollIntoView实现,指定元素id,通过id获取元素
  • 优点:可以设置元素出现的位置、支持滚动效果、减少代码、高效实现

效果图

scrollIntoView

scrollIntoView() 方法会滚动元素的父容器,使元素出现在可视区域

语法

scss 复制代码
// 默认为scrollIntoView(true)
element.scrollIntoView()
// alignToTop 布尔值 可选
element.scrollIntoView(alignToTop)
element.scrollIntoView(scrollIntoViewOptions)

参数说明

alignToTop

  • 如果为 true,元素的顶端将和其所在滚动区的可视区域的顶端对齐。相应的 scrollIntoViewOptions: {block: "start", inline: "nearest"}。这是这个参数的默认值。
  • 如果为 false,元素的底端将和其所在滚动区的可视区域的底端对齐。相应的 scrollIntoViewOptions: {block: "end", inline: "nearest"}

scrollIntoViewOptions

属性都是可选

behavior

定义滚动效果,值必须以下之一:

  • smooth:滚动应该是平滑的动画。
  • instant:滚动应该通过一次跳跃立刻发生。
  • auto:滚动行为由 scroll-behavior 的计算值决定。
smooth 效果
instant 效果

block

定义垂直方向的对齐,startcenterendnearest 之一。默认为 start

inline

定义水平方向的对齐,start、center、end 或 nearest 之一。默认为 nearest(最近展示)。

默认效果:

浏览器兼容情况

相关推荐
浩宇软件开发7 分钟前
基于OpenHarmony鸿蒙开发医院预约挂号系统(前端后端分离)
前端·华为·harmonyos
嘿是我呀14 分钟前
【用npm安装node时报错“npm 无法加载文件”】
前端·npm·node.js
干前端15 分钟前
Vue3 组件库工程化实战:BEM 命名规范与 useNamespace 深度解析
前端·css
弓弧名家_玄真君17 分钟前
在ubuntu中安装redis
前端·bootstrap·mybatis
RFCEO19 分钟前
学习前端编程:DOM 树、CSSOM 树、渲染树详解
前端·学习·渲染树·dom 树·cssom 树·浏览器的渲染流程·回流/重绘
笨蛋不要掉眼泪21 分钟前
Redis主从复制:原理、配置与实战演示
前端·redis·bootstrap·html
bigdata-rookie24 分钟前
Starrocks 数据模型
java·前端·javascript
白帽子凯哥哥26 分钟前
网络安全Web基础完全指南:从小白到入门安全测试
前端·sql·web安全·信息安全·渗透测试·漏洞
RFCEO32 分钟前
前端编程 课程十四、:CSS核心基础2:选择器优先级 + 伪类选择器(解决冲突+交互效果)
前端·css·交互·css选择器优先级判断规则详解·css important使用·css链接伪类lvha顺序·实现悬浮交互效果
web打印社区34 分钟前
前端实现浏览器预览打印:从原生方案到专业工具
前端·javascript·vue.js·electron