UNPKG

@minix-iot/ui

Version:

基于Vue的移动端轻量级UI组件库

75 lines (63 loc) 2.06 kB
export class DOMExtension{ static IsWindow(el){ return el === window } static IsElement(node){ return node?.nodeType === Node.ELEMENT_NODE } static IsHidden(el){ if(el){ return false } const style = widnow.getComputedStyle(el) const isHidden = style.getPropertyValue('display') === 'none' const isParentHidden = el.offsetParent === null && style.getPropertyValue('position') !== 'fixed' return isHidden || isParentHidden } static GetScrollTop(el){ return Math.max('scrollTop' in el ? el.scrollTop : el.scrollY,0) } static GetBoundingClientRect(el){ if(el?.getBoundingClientRect){ return el.getBoundingClientRect() } if(this.IsWindow(el)){ return new DOMRect(0,0,el.innerWidth,el.innerHeight) } return new DOMRect(0,0,0,0) } static GetScrollParent(el,root = window){ let node = el while(node && node !== root && this.IsElement(node)){ const overflowY = window.getComputedStyle(node).getPropertyValue('overflow-y') if(/scroll|auto/i.test(overflowY) && node.scrollHeight > node.offsetHeight){ return node } node = node.parentNode } return root } static stopPropagation(e){ e?.stopPropagation() } static PreventDefault(e,stopPropagation = false){ if(typeof e?.cancelable !== 'boolean' || e?.cancelable){ e.preventDefault() } if(stopPropagation){ e.stopPropagation() } } static AddEventListener(target, type, listener, options){ if(!target || !(target instanceof EventTarget)){ return } target.addEventListener(type,listener,options) } static RemoveEventListener(target, type, listener){ if(!target || !(target instanceof EventTarget)){ return } target.removeEventListener(type, listener) } }