@minix-iot/ui
Version:
基于Vue的移动端轻量级UI组件库
75 lines (63 loc) • 2.06 kB
JavaScript
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)
}
}