Using jquery to get element's position relative to viewport

前端 未结 6 1251
囚心锁ツ
囚心锁ツ 2020-12-07 08:09

What\'s the proper way to get the position of an element on the page relative to the viewport (rather than the document). jQuery.offset function seemed promising:

6条回答
  •  生来不讨喜
    2020-12-07 09:02

    I found that the answer by cballou was no longer working in Firefox as of Jan. 2014. Specifically, if (self.pageYOffset) didn't trigger if the client had scrolled right, but not down - because 0 is a falsey number. This went undetected for a while because Firefox supported document.body.scrollLeft/Top, but this is no longer working for me (on Firefox 26.0).

    Here's my modified solution:

    var getPageScroll = function(document_el, window_el) {
      var xScroll = 0, yScroll = 0;
      if (window_el.pageYOffset !== undefined) {
        yScroll = window_el.pageYOffset;
        xScroll = window_el.pageXOffset;
      } else if (document_el.documentElement !== undefined && document_el.documentElement.scrollTop) {
        yScroll = document_el.documentElement.scrollTop;
        xScroll = document_el.documentElement.scrollLeft;
      } else if (document_el.body !== undefined) {// all other Explorers
        yScroll = document_el.body.scrollTop;
        xScroll = document_el.body.scrollLeft;
      }
      return [xScroll,yScroll];
    };
    

    Tested and working in FF26, Chrome 31, IE11. Almost certainly works on older versions of all of them.

提交回复
热议问题