@mdui/jq
Version:
拥有和 jQuery 相似 API 的轻量级 JavaScript 工具库
37 lines (36 loc) • 1.08 kB
JavaScript
import { $ } from '../$.js';
import './css.js';
import './eq.js';
import './offset.js';
import './offsetParent.js';
const floatStyle = ($element, name) => {
return parseFloat($element.css(name));
};
// @ts-ignore
$.fn.position = function () {
if (!this.length) {
return undefined;
}
const $element = this.eq(0);
let currentOffset;
let parentOffset = {
left: 0,
top: 0,
};
if ($element.css('position') === 'fixed') {
currentOffset = $element[0].getBoundingClientRect();
}
else {
currentOffset = $element.offset();
const $offsetParent = $element.offsetParent();
parentOffset = $offsetParent.offset();
parentOffset.top += floatStyle($offsetParent, 'border-top-width');
parentOffset.left += floatStyle($offsetParent, 'border-left-width');
}
return {
top: currentOffset.top - parentOffset.top - floatStyle($element, 'margin-top'),
left: currentOffset.left -
parentOffset.left -
floatStyle($element, 'margin-left'),
};
};