首页 > 其他分享 >scrollIntoView 与原生# 实现滚动到可视区域的区别

scrollIntoView 与原生# 实现滚动到可视区域的区别

时间:2024-12-21 12:19:30浏览次数:4  
标签:原生 片段 浏览器 scrollIntoView 可视 URL 滚动 标识符

scrollIntoView 是一个 JavaScript 方法,用于将元素滚动到浏览器窗口的可见区域内。而通过 URL 中的片段标识符(即 # 后面的部分)来实现滚动到页面中的特定位置,则是浏览器内置的行为。这两种方式在实现滚动到可视区域方面有一些关键区别:

1. 行为差异

  • scrollIntoView:

    • 可以编程式地控制何时以及如何滚动。
    • 提供了更多的选项来自定义滚动行为,例如是否平滑滚动 (behavior: 'smooth')、滚动的目标位置 (blockinline 参数) 等。
    • 不会改变浏览器的历史记录或 URL。
  • # (URL 片段标识符):

    • 自动触发,当页面加载时如果 URL 包含片段标识符,浏览器会自动滚动到对应 ID 的元素处。
    • 默认情况下通常会立即滚动到目标位置,但现代浏览器也支持平滑滚动。
    • 会更新浏览器的历史记录和 URL,这意味着用户可以使用后退按钮返回到之前的位置,或者直接链接到特定部分。

2. 兼容性和灵活性

  • scrollIntoView:

    • 更灵活,允许开发者根据需要调用,并且可以根据不同的条件动态选择要滚动到的元素。
    • 支持所有主流浏览器,但在某些旧版浏览器中可能缺少对一些高级选项的支持。
  • #:

    • 几乎所有浏览器都支持基于 URL 片段的滚动行为。
    • 对于 SEO 更友好,因为搜索引擎爬虫能够识别并索引这些锚点链接。

3. 性能考虑

  • scrollIntoView:

    • 如果频繁调用,尤其是在事件循环内(如滚动事件监听器),可能会引起性能问题。因此,应当注意避免不必要的调用,并考虑缓存计算结果或使用防抖/节流技术。
  • #:

    • 一般不会造成性能问题,除非页面上有大量的 DOM 元素,这时初始加载时可能会有短暂的延迟。

4. 使用场景

  • scrollIntoView:

    • 适合在交互式应用中使用,比如点击按钮后滚动到特定部分。
    • 当你想要更精细地控制滚动动画或其他与滚动相关的用户体验时非常有用。
  • #:

    • 最适用于创建书签链接或导航菜单,让用户可以直接跳转到页面的不同部分。
    • 在构建静态文档或博客文章时特别有用,因为它可以让读者轻松地分享指向特定章节的链接。

综上所述,选择哪种方法取决于你的具体需求:如果你追求的是更精细的控制和更好的用户体验,那么 scrollIntoView 可能是更好的选择;
而如果你希望简单地提供书签功能并且不介意更改 URL,那么利用 URL 片段标识符可能是最简便的方法。

使用ID + # 的方式还有如下缺点:

  • 使用ID 可能会重复
  • 只适用于整体网页的滚动条
  • 使用 hash ,若框架使用的是hash路由,则不起作用

scrollIntoView的适用场景:

  • 点击按钮滚动到顶部
  • 点击提交,滚动到报错的表单项

标签:原生,片段,浏览器,scrollIntoView,可视,URL,滚动,标识符
From: https://www.cnblogs.com/longmo666/p/18620633

相关文章

  • 如何使用Yolov8训练使用——智慧煤矿检测井下作业 矿工煤矿工作人员检测 液压支撑防护
    煤矿井下开采异常检测数据集,用于目标检测智慧矿井智能分析应用数据集包含6类目标:1.煤矿工作人员检测2.液压支撑防护板检测(液压支撑防护板所有角度如防护板0到30度,30度到60…等多角度检测,防护板异常等)3.大煤块检测(输送带上的异物,锚杆,煤矸石等类别)4.采煤机拖揽检测5.......
  • 你有使用过scrollIntoView这个方法吗?说说它的用途
    scrollIntoView方法的使用和用途scrollIntoView()是一个非常实用的前端开发方法,它允许开发者将指定的DOM元素滚动到浏览器窗口的可见区域内。以下是对scrollIntoView()方法的详细解释和归纳:一、基本用途scrollIntoView()方法的主要用途是将某个特定的元素滚动到浏览器窗口的可......
  • 【山东农业工程学院毕业论文】基于网络爬虫的招聘数据分析与可视化系统设计与实现
    注:仅展示部分文档内容和系统截图,需要完整的视频、代码、文章和安装调试环境请私信up主。目 录摘要关键词AbstractKeywords1 绪论1.1 系统开发的背景1.2 研究意义1.3 研究内容2 系统的开发环境及相关技术介绍2.1 系统的开发环境2.2 系统的开发......
  • 无插件H5播放器EasyPlayer.js如果要达到原生播放的效果,应怎么操作?
    随着流媒体技术的迅速发展,H5流媒体播放器已成为现代网络视频播放的重要工具。其中,EasyPlayer.js播放器作为一款功能强大的H5播放器,凭借其全面的协议支持、多种解码方式以及跨平台兼容性,赢得了广泛的关注和应用。那么播放器如果想要达到原生播放的效果,我们应该怎么做呢?1、延时优......
  • 零代码生成管道+粒子特效!炫酷智慧管廊可视化!
    本系统通过数字孪生技术,实现智慧管廊可视化管理,系统打破了传统管理模式下数据分散、孤立的壁垒,将GIS地理信息数据与城市管道、设备数据深度融合,实现了数据的互联互通与共享协同,助力管理者做出科学决策。1.丰富的标绘功能丰富的标绘功能是本系统的一大亮点,其创新性地实现了零......
  • CNCF云原生生态版图-分类指南(五)- 应用定义和开发
    CNCF云原生生态版图-分类指南(五)-应用定义和开发CNCF云原生生态版图-分类指南五、应用定义和开发(AppDefinitionandDevelopment)(一)应用定义和镜像构建(ApplicationDefinition&ImageBuild)1.是什么?2.解决什么问题?3.如何解决问题?4.使用的技术5.项目和产品整体介绍......
  • 5.8K star!基于Go的可视化定时任务管理系统!
    *戳上方蓝字“开源先锋”关注我  推荐阅读: 《12.6Kstar!Shell命令即搞定可视化监控,超级6~~》 《5.6Kstar!再见了DocSend,这款开源项目更不错!》 《4.1Kstar!跨屏操作的神器,流畅丝滑!》 《9.1Kstar!国外大神1:1复刻Win11系统,开源牛逼!》 《2.8Kstar!超强音乐管理......
  • (免费源码)计算机毕业设计必学必看 万套实战教程 java、python、php、node.js、c#、APP
    摘要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,机房预约系统小程序被用户普遍使用,为方便用户能够可以随时进行机房预约系统小程序的数据信息管理,特开发了基于机房预约系统......
  • (免费源码)计算机毕业设计必学必看 万套实战教程 java、python、php、node.js、c#、APP
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,校园商店当然也不能排除在外。校园商店是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过程首先对软件系统进行......
  • docker可视化管理工具lazydocker使用
    工具介绍Lazydocker是一个基于Go语言开发的命令行界面Docker管理工具。它通过一个简洁的终端界面,可以实时查看Docker容器、镜像、网络等信息。它提供了交互式的操作方式,可以直接用鼠标操作也可以键盘操作,几乎所有操作都可以通过方向键和快捷键完成,省去了很多需要用命令操作的步骤......