You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					30 lines
				
				876 B
			
		
		
			
		
	
	
					30 lines
				
				876 B
			| 
											3 years ago
										 | 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; | ||
|  | } |