3

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

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

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

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

我的问题是,我如何找到trackedBounds最近的北部currentElement

4

1 回答 1

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]
于 2017-10-01T20:52:47.017 回答