javascript - HTML:有什么方法可以确定一个元素是否在另一个元素后面?

标签 javascript html css

我们有一个带有搜索弹出窗口的应用程序。您搜索一个术语,它会在页面中找到它们并向该词添加一个类,从而突出显示文本。有时,找到的实例位于搜索弹出窗口后面的页面区域中。如果是这样,我想调低搜索弹出窗口的不透明度,以便用户可以看到它背后的实例。有什么简单的方法可以做到这一点吗?任何提示或技巧表示赞赏。一项要求是搜索弹出窗口在搜索后保持打开状态,因此我们不能关闭/隐藏它。

最佳答案

您可以在找到的文本和弹出窗口上使用 getBoundingClientRect() 并比较尺寸。

MSDN
MDN range , element

您可以直接对文本范围进行操作,但听起来您有一个元素包裹找到的文本以应用高亮显示,所以我只使用该元素。我认为您可以将找到的文本和弹出窗口传递给此函数以测试它们是否重叠:

function isOverlapping (a, b)
{
    var rectA = a.getBoundingClientRect();
    var rectB = b.getBoundingClientRect();
    return rectA.top < rectB.bottom && rectA.bottom > rectB.top &&
        rectA.left < rectB.right && rectA.right > rectB.left;
}

编辑:我手上的时间肯定太多了,因为这里有一个有趣的小演示:http://jsfiddle.net/gilly3/qUFLJ/4/

关于javascript - HTML:有什么方法可以确定一个元素是否在另一个元素后面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7653809/

相关文章:

javascript - 如何在javascript中组合具有相同键的数组中的对象?

Java 和类型安全

javascript - 如何在浏览器窗口中加载javascript?

javascript - 内容未在选项卡中加载

html - CSS 删除仅包含 <br> 的 HTML 元素

javascript - 使用 npm 请求库时未保存 Cookie

html - 关于如何在 CSS 中应用 clear 属性的困惑

jquery - 如何更改某个元素的 href 值

javascript - 这个 margin 是怎么来的

CSS 问题 : Why is sidebar not clickable?