javascript - 如何找到所有可见元素中最重要的元素?(离用户最近)
问题描述
如果我们假设桌面是一个真正的桌面,我想找到这张纸,它位于所有其他桌面之上,最靠近用户的鼻子。
我知道我在某处读过,会有一个相对较新的(可能是几年)javascript 命令,让浏览器完成工作,但我再也找不到参考了。
[编辑:我记得在以前的 Firefox 版本的开发人员工具中有一个html 页面的3-D 视图。(据我所知,它已被删除。)该工具必须包含一个算法来确定元素的有效顺序。 刚查了火狐前3-D查看工具的截图,似乎并没有真正寻找最近的元素,只是做了一个简单的叠加。似乎是个死胡同。]
解决方案
您可以创建getHighestZindex
如下定义的函数:
function getHighestZindex(elem)
{
const elems = document.getElementsByTagName(elem);
let top = 0;
for (let i = 0; i < elems.length; i++)
{
const zindex = document.defaultView.getComputedStyle(elems[i],null).getPropertyValue("z-index");
if ((zindex > top) && (zindex != 'auto'))
{
top = zindex;
}
}
return top;
}
您可以调用getHighestZIndex
特定的元素类型,例如像这样的“DIV”:
getHighestZIndex('div');
编辑
将有两个用例来检查哪个元素在顶部
z-index
如果在 css 中没有定义任何元素- 如果任何元素或所有元素
z-index
在 css 中都有特定定义。
所以会has_allauto
在函数中添加一个检查...
假设您有html
如下代码:
<div id="block-1">
<div id="inner-block"></div>
</div>
<div id="block-2"></div>
并检查哪个元素在顶视图上,函数如下所示:
function getHighestZindex(elem) {
const elems = document.getElementsByTagName(elem);
let id = "";
let top = 0;
let has_allauto = true;
for (let i = 0; i < elems.length; i++) {
const zindex = document.defaultView
.getComputedStyle(elems[i], null)
.getPropertyValue("z-index");
if (zindex !== "auto") {
has_allauto = false;
}
if (zindex > top && zindex != "auto") {
top = zindex;
id = elems[i].id;
}
}
if(has_allauto) {
id = elems[elems.length-1].id;
}
return id;
}
这将返回id
视图顶部的元素。
工作示例示例
推荐阅读
- python-3.x - 如何在 MechanicalSoup 中将 cookie 添加到现有 cookie
- r - 使用 purrr map 将函数应用于 dplyr 管道中 DataFrame 中的列选择
- javascript - 我想在 JSON.stringify() 之后播放 htmlDecode
- leaflet - 绘制 Leaflet 层与加载 Leaflet 层时 Geojson 结构不同
- javascript - 我的网站上的平滑滚动无法正常工作
- python - 与 multiprocessing.pool 共享大型数据框
- python-3.x - 抓取工作正常,直到附加到列表
- python - 为不同的查询创建新的 SparkSession?
- pytorch - Pytorch:DataParallel 无法减少具有相同总批量大小的模型推理时间
- ember.js - Ember hasMany 关系保存在创建