zent
Version:
一套前端设计语言和基于React的实现
40 lines (34 loc) • 989 B
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = findPositionedParent;
/**
* Find the first positioned ancestor up in the DOM tree.
*
* @param {Node} elem dom element to search from
* @param {boolean} inclusive true if elem is considered an ancestor of itself
*
* @return {Node} the first positioned ancestor node
*/
function findPositionedParent(elem) {
var inclusive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
function isPositioned(node) {
var cs = getComputedStyle(node);
var pos = cs.getPropertyValue('position');
return pos !== 'static';
}
if (!elem) {
return null;
}
if (inclusive && isPositioned(elem)) {
return elem;
}
for (var parent = elem.parentElement; parent !== null; parent = parent.parentElement) {
if (isPositioned(parent)) {
return parent;
}
}
return document.documentElement;
}
module.exports = exports['default'];
;