2016-08-23 52 views
0

如何判断一个元素是否高于另一个元素(如计算完所有z索引后)与querySelectorAll的结果。如何判断一个元素是否高于另一个来自querySelectorAll的结果

+0

不要认为有一个简单的解决方案或一些浏览器API可以使用。您可能必须编写与渲染引擎相同的逻辑,因此请考虑z-index(以及随附的规则),然后再考虑html元素的顺序和结构。你甚至想要完成什么? –

+0

您可以使用https://stackoverflow.com/questions/18780139/how-to-get-bounding-box-for-div-element-in-jquery进行操作,并检查是否有任何选定项目的边界盒相交。这不会给你的命令,但你可以消除那些甚至不是彼此靠近的命令。这是一些2D游戏的工作原理,因此搜索包围盒可能会得到一些与游戏相关的结果。 – jedifans

+0

@MarkoGrešak你认为我可以逃脱只使用树的深度? – SuperUberDuper

回答

1

不要以为有一个简单的解决方案,因为在那里是一个浏览器API,你可以打电话并获得元素“z高度”。

您可以像渲染引擎工作的方式类似地处理此问题,其中基于DOM树深度的堆叠元素位于另一个之上。然后还有CSS引擎,它根据标签类型和CSS中的特殊规则(如z-index,特殊位置属性(relativeabsolute等),甚至CSS“怪癖”)更改元素位置,例如z-index + opacity更改方式元素被堆叠。

根据您的目标,您可以简化解析并忽略CSS正在做什么,只考虑HTML。在那里你有DOM API,这使得遍历树结构变得非常容易,DOM渲染引擎将处理所有错误但仍然工作的标记。

-1

如果你可以使用jQuery,检查

$(element).css("z-index");