找到最接近的BoundingClientRect

时间:2015-05-04 14:24:38

标签: javascript getboundingclientrect

我有一个ClientRect对象数组,我通过这样做了

var trackedElements = $('[track]');
var trackedBounds = [];
_.each(trackedBounds, function(elem) {
    return $(elem)[0].getBoundingClientRect();
});

我还有另一个元素的边界客户端rect。

var currentElement = $('.active')[0].getBoundingClientRect();

我的问题是,如何在trackedBounds最近的北currentElement内找到?

1 个答案:

答案 0 :(得分:0)

我认为你可以过滤不在currentElement以北的作品:

trackedBounds = trackedBounds.filter(rect => rect.bottom > currentElement.top)

并对其.bottom媒体资源的其余部分进行排序:

trackedBounds = trackedBounds.sort((rect1, rect2) => rect1.bottom - rect2.bottom)

结果是trackedBounds数组的第一个元素:

let result = trackedBounds
    .filter(rect => rect.bottom > currentElement.top)
    .sort((rect1, rect2) => rect1.bottom - rect2.bottom)
    [0]