Blame view

天文台pc/tianwentai-ui/node_modules/dom-helpers/cjs/offset.js 1.2 KB
bc518174   王天杨   提交两个项目文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  "use strict";
  
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  
  exports.__esModule = true;
  exports.default = offset;
  
  var _contains = _interopRequireDefault(require("./contains"));
  
  var _ownerDocument = _interopRequireDefault(require("./ownerDocument"));
  
  var _scrollLeft = _interopRequireDefault(require("./scrollLeft"));
  
  var _scrollTop = _interopRequireDefault(require("./scrollTop"));
  
  /**
   * Returns the offset of a given element, including top and left positions, width and height.
   * 
   * @param node the element
   */
  function offset(node) {
    var doc = (0, _ownerDocument.default)(node);
    var box = {
      top: 0,
      left: 0,
      height: 0,
      width: 0
    };
    var docElem = doc && doc.documentElement; // Make sure it's not a disconnected DOM node
  
    if (!docElem || !(0, _contains.default)(docElem, node)) return box;
    if (node.getBoundingClientRect !== undefined) box = node.getBoundingClientRect();
    box = {
      top: box.top + (0, _scrollTop.default)(docElem) - (docElem.clientTop || 0),
      left: box.left + (0, _scrollLeft.default)(docElem) - (docElem.clientLeft || 0),
      width: box.width,
      height: box.height
    };
    return box;
  }
  
  module.exports = exports["default"];