js - js中关于getBoundingClientRect()方法的使用

news2025/8/9 21:08:41

介绍一下getBoundingClientRect()方法的一些属性,以及具体的使用场景和一些需要注意的问题;

1,介绍

此方法返回元素的大小及其相对于视口的位置;返回的是一个对象: 包括 left、top、right、bottom、x、y、width 和 height这几个属性;

属性描述
Element.getBoundingClientRect().top元素上边距离页面上边的距离
Element.getBoundingClientRect().left元素左边距离页面左边的距离
Element.getBoundingClientRect().right元素右边距离页面左边的距离
Element.getBoundingClientRect().bottom元素下边距离页面上边的距离
Element.getBoundingClientRect().x元素左边距离页面左边的距离
Element.getBoundingClientRect().y元素右边距离页面左边的距离
Element.getBoundingClientRect().width 元素自身的宽度
Element.getBoundingClientRect().height 元素自身的高度

注意:
1,对象中的 width 和 height 属性是包含了内边距(padding )和边框( border )的宽度的,而不仅仅是内容部分的宽度和高度。
2,当页面过高且滚动的时候,元素不在视口的可视区域时 是会出现负值的;
3,空边框盒(没有内容的边框)会被忽略。那么这个矩形给该元素返回的 width、height 值为 0,left、top 值为第一个 CSS 盒子(按内容顺序)的 top-left 值。

下面是演示图:
在这里插入图片描述

2,使用场景:

由图可知这是一个吸顶的菜单栏,当内容向上滚动时,总况趋势滚动到页面的上半部分时,吸顶菜单相对应的项要高亮起来,当机构趋势模块滚动到页面上半部分时,吸顶菜单的机构趋势也要高亮起来;

思路:
1,第一首先要监听滚动条,每一滑动都要判断距离页面上面的距离;
2,判断总况趋势顶部距离上边视口的高度如果小于200 且总况趋势底部距离上边的距离大于0,就高亮总况趋势;

得到

主要代码如下:
tabItem是通过this.$ref获取的每一项内容模块(页面紫色和淡黄色的部分);

实际情况还是要根据业务要求来实现,这只是记录一种思路;

  // 记录选中的当前项
        for (let i = 0; i < tabItems.length; i++) {
          let ClientRect = tabItems[i].getBoundingClientRect().top
          // 此行是为了向上滚动出现负数的情况 处理上半部分
          let handleTop = ClientRect <= 0 ? ClientRect * -1 : ClientRect;
          // 获取元素容器下边 距离页面上边的距离
          let handleBottom = tabItems[i].getBoundingClientRect().bottom;
          // console.log("下面距离上面的高度:",handleBottom);
          // handleTop <= 200是为了控制上半部分  handleBottom >0是为了控制向上滑动的过程中下面也需要判断
          if (handleTop <= 200 && handleBottom > 0 ) {
            this.act_index = i;
            break; //退出所有的循环
          }
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/34041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ThinkPHP5目录结构

文章目录一、TP5的框架的下载1、[采用fastAdmin安装](https://www.fastadmin.net/download.html)2、Composer安装2.1 Composer提供的服务3、Git安装二、使用Composer安装后目录结构2.1 补充获取 Git 仓库git的工作机制一、TP5的框架的下载 1、采用fastAdmin安装 FastAdmin是一…

数据可视化大屏设计

在数据业务展示场景中&#xff0c;数据可视化大屏已经变得十分常见。那么在设计思路上&#xff0c;数据可视化大屏应当遵循什么样的设计逻辑&#xff1f;本篇文章里做了介绍&#xff0c;一起来看一下。 一、数据大屏的应用场景 1、大型会议 2、业务展示 二、数据大屏分类 1、展…

阿里云新用户滑块验证不过,阿里云滑动验证流程及线上问题排查

滑动验证是阿里巴巴集团提供的一种验证码解决方案&#xff0c;采用风险分析引擎&#xff0c;有效区分来自人类与机器人的访问行为并拦截机器风险&#xff0c;为您提供安全可靠的业务环境。 下图是滑动验证在用户客户端的展示效果。 产品介绍&#xff1a;阿里云验证码&#x…

5.XMLHttpRequest对象

XMLHttpRequest简称xhr&#xff0c;是浏览器提供的Javascript对象。之前我们使用的都是jQuery中的Ajax&#xff0c;现在我们使用原生JS的Ajax 目录 1 GET请求 1.1 不带参数请求 1.2 带参数请求 2 URL的编码与解码 2.1 编码 encodeURI() 2.2 解码 decodeURI() 3 …

计算机网络——TCP连接管理

本文将会介绍如何建立和拆除一条TCP连接&#xff0c;TCP的连接会显著的增加人们感受到的时延&#xff08;尤其是在Web冲浪时&#xff09;。同时一些常见的网络攻击SYN洪范攻击利用了TCP连接管理的弱点。 假定运行一台主机&#xff08;客户&#xff09;上的一个进程想和另一台主…

Spring中各种注解的使用说明汇总清单

目录 一、放在最开始方法的外侧的注解 1、ControllerAdvice&#xff1a; 2、ResponseBody 3、slf4j 4、Configuration 5、Component 6、Mapper 7、Service 8、RestController RequestMapping("/路径") 9、EnableTransactionManagement和Transactional&…

maven学习:maven安装、maven仓库、Idea配置maven

一、maven安装 1.1 下载maven Maven的版本对应的jdk和发布日期:Maven – Maven Releases History 到官方网站下载maven,网站: Maven – Download Apache Maven 如下图: 下载maven之前的版本:Index of /dist/maven/maven-3 注意&#xff1a; idea与maven的版本需要兼容, 所以我…

Python学的好,工作不愁找

俗话说的好&#xff1a;“Python学的好&#xff0c;工作不愁找”&#xff0c;不管我们学习哪一门语言&#xff0c;我们都要掌握从抽象化中提取出来的方法&#xff0c;这样你才能提高我们的学习能力&#xff0c;并且在学习新事物的时候可以提取我们自己的想法。学习Python&#…

基于SpringBoot的仿小米商城系统

仿小米商城分为前后台&#xff0c;分为用户和管理员两种角色&#xff0c;管理员可以登录后台管理系统~ 可以作为毕设~也可以作为学习的项目~ 前台部分运行截图如下所示 后台部分运行截图如下所示 拒绝白嫖&#xff01;20分享源码&#xff01;want to get it 私 me&#xf…

Java入门简单小游戏有哪些?

适合新手练习的小游戏有超级玛丽、愤怒的小鸟、飞机大战、五子棋、彩虹雨、聊天室、华容道、坦克大战、扫雷等。还有贪吃蛇&#xff0c;由Java开发出来的一款经典小游戏&#xff0c;java小白入门可以用这款游戏开发练手锻炼自己的编程能力。 教程推荐&#xff1a;玩会Java&…

【Linux】(六)MobaXterm文件传输与终端-实验室服务器使用MobaXterm传输文件和ssh终端连接

MobaXterm系列文章文件传输或远程终端&#xff08;MobaXterm&#xff09;系列文章 &#xff08;一&#xff09;服务器初次配置及安装vncserver &#xff08;二&#xff09;实验室添加新用户及其配置vnc4server、xfce4桌面访问流程 &#xff08;三&#xff09;VNC桌面连接开发方…

C++初阶(stack+queue)

stack是一种容器适配器&#xff0c;专门用在具有后进先出 (last-in first-out)操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作为其底层的容器&#xff0c;并提供一组…

Unity RectTransform 组件

文章目录1.RectTransform 介绍2.Anchor 锚点3.Pivot 轴心点4.RectTransform API 属性4.1 anchorMax、anchorMin —— 锚点矩形4.2 offsetMax、offsetMin —— 偏移量4.3 rect —— 矩形类4.4 sizeDelta —— UI坐标4.5 anchoredPosition —— UI坐标5.RectTransform API 方法5.…

数据可视化 | Tableau从入门到高手 入门联接关系数据预处理

Tableau 人人可用、处处可用的分析 Tableau 是一个可视化分析平台&#xff0c;它改变了我们使用数据解决问题的方式&#xff0c;使个人和组织能够充分利用自己的数据。利用 Tableau 查看并理解任何数据。 Tableau Software 可以帮助人们查看并理解数据&#xff0c;可连接到几乎…

蓝桥杯实战应用【算法代码篇】-基于数组实现线性表

前言 线性表是由有限个具有相同性质的元素构成,结构上要求,非表头和表尾元素有且只有一个前驱和后继。对于表头和表尾元素,如果是没有环的线性表,则表头元素没有前驱,表尾元素没有后继。如果有环则均存在前驱和后继元素。对于线性结构,有两种保存的方法,一种是使用C语言…

Spring Boot Admin -Actuator 图形化管理工具

Spring Boot Admin 概述 之前学习了Spring Boot Actuator的特性&#xff0c;它能够是开发者很便捷的监控系统的各种指标&#xff0c;但是有一个很大的问题 — 不够直观。今天来学习下Spring Boot Admin。Spring Boot Admin 是一个免费的开源社区项目&#xff0c;用于监控、管…

Java多线程:从基本概念到避坑指南

本文为掘金社区首发签约文章&#xff0c;未获授权禁止转载 多核的机器&#xff0c;现在已经非常常见了。即使是一块手机&#xff0c;也都配备了强劲的多核处理器。通过多进程和多线程的手段&#xff0c;就可以让多个CPU同时工作&#xff0c;来加快任务的执行。 多线程&#xf…

户外运动耳机推荐、这几款耳机专为户外运动而生

随着夏日的艳阳离去&#xff0c;秋意渐浓。在这个最适合郊外野游&#xff0c;最适合户外运动的季节&#xff0c;我们当然不能继续做我们的宅男宅女&#xff0c;而应该放任自己到野地里去撒一回野。当然&#xff0c;对于没有数码产品一天都不能活的你来说&#xff0c;即使行走在…

debug(二)(还没完)

视频来源&#xff1a;尚硅谷_宋红康_IDEA2022版本的安装与使用 【【尚硅谷】IDEA2022全新版教程&#xff0c;兼容JDK17&#xff08;快速上手Java开发利器&#xff09;】 https://www.bilibili.com/video/BV1CK411d7aA?p16&vd_source581d732b20cb23e01428068f153a99ed I…

Spring Security(5)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; 经常上网的人都应该有这样的体验&#xff1a;很多网站或者APP只需要第一次登录时输入用户名和密码之后&#xff0c;后面很长一段时间内就不需要再次输入密码了。…