UNPKG

ukelli-ui

Version:

Base on React's UI lib. Make frontend's dev simpler and faster.

55 lines (54 loc) 1.71 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import { getScrollTop } from './scroll'; /** * 获取元素的 OffsetLeft 和 OffsetTop 信息,包括滚动后的偏移量 */ export function getElementOffset(element) { if (!element) { throw Error('需要传入 Element'); } var actualTop = element.offsetTop; var actualLeft = element.offsetLeft; var current = element.offsetParent; while (current !== null) { actualLeft += (current.offsetLeft + current.clientLeft - current.scrollLeft); actualTop += (current.offsetTop + current.clientTop - current.scrollTop); current = current.offsetParent; } /** 需要把 body 的滚动加上 */ actualTop -= getScrollTop(); return { offsetLeft: actualLeft, offsetTop: actualTop }; } /** * 获取元素的 offsetLeft */ export function getElementLeft(element) { return getElementOffset(element).offsetLeft; } /** * 获取元素的 offsetTop */ export function getElementTop(element) { return getElementOffset(element).offsetTop; } /** * 获取元素的 Offset 信息 */ export function getElementOffsetInfo(element) { var offsetHeight = element.offsetHeight, offsetWidth = element.offsetWidth; return __assign(__assign({}, getElementOffset(element)), { offsetHeight: offsetHeight, offsetWidth: offsetWidth }); }