使所有元素接触一个矩形
Get all Elements touching a rectangle
我需要获取其边界矩形与我选择的任意矩形相交的所有元素。我不知道本机实现这一点的方法,到目前为止,我最好的解决方案是在矩形内的一个有代表性的点样本上调用document.elementFromPoint,这远非完美,因为它可能会错过元素。
在矩形中的每个点上运行它将是一场性能噩梦,因此不是一种选择。即使这是可行的,我也不认为它会捕获width: 0; height: 0
的元素,尽管这对我来说不是一个很大的问题。
我有关于如何使用多点方法最大限度地减少假阴性的想法,但有真正的解决方案吗?
- 获取可能与矩形接触的每个元素的边界矩形
- 对于每个元素,检查边界矩形和矩形是否相交
如果你有大量的元素,并且你可以假设"元素的子元素的边界矩形总是包含在元素的边界中",那么有一些优化是可能的。或者当元素以某种方式排序时。但是,如果在CSS允许的情况下,任何HTML元素的任何位置都是可能的,那么您需要检查所有位置。
如果它们是平行的,那么只需为每个矩形定义四个参数即可:x、y、宽度和高度。现在,与使用单个点相比,对它们进行比较可以大大减少性能消耗,而且您总能得到准确的结果。
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 表追加而不附加最后一个元素
- 滚动到容器中的下一个元素-几乎到了
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 按我自己的类克隆另一个元素的内容和顺序
- Javascript获取上一个元素的内容
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 在数组中的一个元素上设置多个值
- 无法选择除一个元素外的所有元素
- 使用jquery contains获取一个元素并添加类
- $(.class).empty总是缺少一个元素
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- 如何在一个元素动画之后延迟
- jQuery转盘下一个元素没有滑入
- jquery从另一个元素中移除移除
- DIV怎么能像Javascript中的另一个元素一样工作呢
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- 使用数据属性将HTML数据复制到另一个元素
- 如何选择给定类的上一个元素
- 动态修改一个元素,使其与给定的选择器匹配