js基于像素查找DOM元素的方法

来源:互联网 发布:怎么投诉淘宝买家骚扰 编辑:程序博客网 时间:2024/06/05 17:23

开发时遇到一个相对奇葩的需求,手机浏览器左列显示数据日期,右列显示内容,但是只显示位于屏幕最上面位置的第一条的日期,其他均不显示。而且还有各种滚动和数据更新。其实就是根据像素查找元素,然后显示元素(默认隐藏)。搜了一番居然真有,不过就喜欢这种小众的东西。

var ele = document.elementFromPoint(23,23)

MDN关于这个方法的说明文档
elementFromPoint方法的两个参数分别为需要定位的像素位置的X和Y轴坐标,注意是相对于浏览器窗口左上角可视区域的坐标。
ele为该坐标位置最顶层的元素。
单纯这样勉强可以用,但是元素总是相互嵌套的,不小心差一点,整个页面的样式就不忍直视了。
于是对获取到的元素进行判断和修正。
元素层级关系是:li>div.div1>span

var ele = document.elementFromPoint(20,20);// 判断ele是否是div1if (ele&&ele.className&&ele.className.indexOf("div1") == -1)    if (dateEle.tagName == "SPAN") {        // 如果获取的元素是子级,则修正为当前元素的父元素        dateEle = dateEle.parentNode    }else if (dateEle.tagName == "LI") {        // 如果获取的元素是父级元素,则修正为当前元素的子元素        dateEle = dateEle.childNodes[0];    };}
0 0
原创粉丝点击