首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

判断元素是否视窗之内

本文作者:IMWeb elvin 原文出处:IMWeb社区 未经同意,禁止转载 作为一名前端工程师我们经常需要判断目标元素是否视窗之内或者和视窗的距离小于一个值(例如 100 px),从而实现一些常用的功能...目前流行的方式是通过 Element.getBoundingClientRect() 拿到元素的相关位置信息后进行手动的判断,但是这种方法由于运行在 JavaScript的主进程,所以当需要监听的元素较多时...那么仔细想一想,其实在浏览器渲染的时候,它就知道了元素是否视窗之内,自身面积有多少视窗之内。...下图是使用 Element.getBoundingClientRect() 进行计算实现的效果,可以看到有非常明显的卡顿,主要是因为需要对每一个元素都进行计算,判断它们是否视窗之内。...如果一个元素视窗之内的话,那么它一定满足下面四个条件: top 大于等于 0 left 大于登录 0 bottom 小于等于视窗高度 right 小于等于视窗宽度 考虑到不同浏览器的兼容性,可以写出来如下的函数用于判断元素是否视窗之内

2K20

空间判断是否在线段

概述 判断是否在线段的算法非常简单,有很多种实现方式,总结一下我自己的实现。 2. 详论 个人认为通过向量计算的方式是比较好的,因为可以保证二维和三维的情况都成立。...判断空间中点P是否在线段P1P2,算法思想是分成两部分: 计算 \vec{P1P2} 与 \vec{P1P} 的向量叉积,可以判断是否存在一条直线上。...计算向量点积,点积的几何意义是一个向量向另外一个向量的投影;如果满足如下公式,说明是两个端点之间: 0<{\vec{P1P}}\cdot{\vec{P1P2}}<{||\vec{P1P2}||}^2...Eigen; using namespace std; using LineSegment = Vector2d[2]; const double epsilon = 0.000000001; //判断点在线段...参考 判断是否在线段 How can you determine a point is between two other points on a line segment?

1.2K10

如何判断 Activity 是否有弹窗

今天来看个需求,如何判断 Activity 上面是否有弹窗,当然,简单的方式肯定有,例如在 Dialog show 的时候记录一下,但这种方式不够优雅,我们需要一款更通用的判断方式。...所以,我们只需要判断 mView 集合中,两个 activity 之间是否有存在其他的 View,如果有,那就是有弹窗,开发步骤为: registerActivityLifecycleCallbacks...所以,通过区间来判断还是有缺点的。那有没有一种方法,可以直接遍历 mView 集合就能找到目标 Activity 是否有弹窗呢?还真有,那就是 AppToken。...Activity 打开系统弹窗,然后进入第二个 Activity,调用两种方式来获取当前是否有弹窗的结果如下 第一种方案会判断失败,因为这时候的弹窗 View 第一个 Activity 与 第二个...Activity 之间,所以,第二个 Activity 无法通过区间的方式判断是否有弹窗 第二种方案判断成功,因为这时候的弹窗 token 为 null,并通过 getFloatWindowViewByToken

2.8K20
领券