关于视口的元素位置

时间:2015-11-30 18:27:26

标签: javascript jquery html angularjs

我正在尝试计算元素相对于视口的位置(上方,下方或视口中):

    var viewportBottom = function () {
            return window.pageYOffset;
        },
        viewportTop = function () {
            return window.pageYOffset - window.innerHeight;
        },
        elementTop = function ($e) {
            return $e.offset().top - $e.height();
        },
        elementBottom = function ($e) {
            return elementTop($e) + $e.height();
        };


var aboveViewport = viewportTop() > elementBottom(this.$e),
        belowViewport = viewportBottom() < elementTop(this.$e),
        inViewport = !aboveViewport && !belowViewport;

只有元素的高度与视口相同时,才能正确计算。 我错过了什么?

1 个答案:

答案 0 :(得分:2)

这个api对我有用:getBoundingClientRect, 它专门用于评估关于视口的位置。

这是我最终做的事情:

var container     = element.getBoundingClientRect(),
    aboveViewport = (container.top  + container.height) < 0 ,
    belowViewport = container.top > $(window).height(),
    inViewport    = !aboveViewport && !belowViewport,