Blame view

天文台pc/tianwentai-ui/node_modules/dom-helpers/esm/offset.js 876 Bytes
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
  import contains from './contains';
  import ownerDocument from './ownerDocument';
  import scrollLeft from './scrollLeft';
  import scrollTop from './scrollTop';
  /**
   * Returns the offset of a given element, including top and left positions, width and height.
   * 
   * @param node the element
   */
  
  export default function offset(node) {
    var doc = ownerDocument(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 || !contains(docElem, node)) return box;
    if (node.getBoundingClientRect !== undefined) box = node.getBoundingClientRect();
    box = {
      top: box.top + scrollTop(docElem) - (docElem.clientTop || 0),
      left: box.left + scrollLeft(docElem) - (docElem.clientLeft || 0),
      width: box.width,
      height: box.height
    };
    return box;
  }