import type { ParseHTMLReturnType, PopsDOMUtils_Event, PopsDOMUtils_EventType, PopsDOMUtilsAddEventListenerResult, PopsDOMUtilsCreateElementAttributesMap, PopsDOMUtilsCSSProperty, PopsDOMUtilsCSSPropertyType, PopsDOMUtilsElementEventType, PopsDOMUtilsEventListenerOption, PopsDOMUtilsEventListenerOptionsAttribute, PopsDOMUtilsTargetElementType } from "../types/PopsDOMUtilsEventType"; declare class PopsDOMUtilsEvent { get windowApi(): Window & typeof globalThis; /** * 绑定事件 * @param element 需要绑定的元素|元素数组|window * @param eventType 需要监听的事件 * @param handler 绑定事件触发的回调函数 * @param option * + capture 表示事件是否在捕获阶段触发。默认为false,即在冒泡阶段触发 * + once 表示事件是否只触发一次。默认为false * + passive 表示事件监听器是否不会调用preventDefault()。默认为false * @example * // 监听元素a.xx的click事件 * DOMUtils.on(document.querySelector("a.xx"),"click",(event)=>{ * console.log("事件触发",event) * }) * DOMUtils.on("a.xx","click",(event)=>{ * console.log("事件触发",event) * }) */ on(element: PopsDOMUtilsElementEventType, eventType: T | T[], handler: (this: E, event: PopsDOMUtils_Event[T]) => void, option?: PopsDOMUtilsEventListenerOption | boolean): PopsDOMUtilsAddEventListenerResult; /** * 绑定事件 * @param element 需要绑定的元素|元素数组|window * @param eventType 需要监听的事件 * @param handler 绑定事件触发的回调函数 * @param option * + capture 表示事件是否在捕获阶段触发。默认为false,即在冒泡阶段触发 * + once 表示事件是否只触发一次。默认为false * + passive 表示事件监听器是否不会调用preventDefault()。默认为false * @example * // 监听元素a.xx的click事件 * DOMUtils.on(document.querySelector("a.xx"),"click",(event)=>{ * console.log("事件触发",event) * }) * DOMUtils.on("a.xx","click",(event)=>{ * console.log("事件触发",event) * }) */ on(element: PopsDOMUtilsElementEventType, eventType: string | string[], handler: (this: E, event: T) => void, option?: PopsDOMUtilsEventListenerOption | boolean): PopsDOMUtilsAddEventListenerResult; /** * 绑定事件 * @param element 需要绑定的元素|元素数组|window * @param eventType 需要监听的事件 * @param selector 子元素选择器 * @param handler 绑定事件触发的回调函数 * @param option * + capture 表示事件是否在捕获阶段触发。默认为false,即在冒泡阶段触发 * + once 表示事件是否只触发一次。默认为false * + passive 表示事件监听器是否不会调用preventDefault()。默认为false * @example * // 监听元素a.xx的click、tap、hover事件 * DOMUtils.on(document.querySelector("a.xx"),"click tap hover",(event, $selector)=>{ * console.log("事件触发", event, $selector) * }) * DOMUtils.on("a.xx",["click","tap","hover"],(event, $selector)=>{ * console.log("事件触发", event, $selector) * }) * @example * // 监听全局document下的子元素a.xx的click事件 * DOMUtils.on(document,"click tap hover","a.xx",(event, $selector)=>{ * console.log("事件触发", event, $selector) * }) */ on(element: PopsDOMUtilsElementEventType, eventType: T | T[], selector: string | string[] | undefined | null, handler: (this: E, event: PopsDOMUtils_Event[T], $selector: E) => void, option?: PopsDOMUtilsEventListenerOption | boolean): PopsDOMUtilsAddEventListenerResult; /** * 绑定事件 * @param element 需要绑定的元素|元素数组|window * @param eventType 需要监听的事件 * @param selector 子元素选择器 * @param handler 绑定事件触发的回调函数 * @param option * + capture 表示事件是否在捕获阶段触发。默认为false,即在冒泡阶段触发 * + once 表示事件是否只触发一次。默认为false * + passive 表示事件监听器是否不会调用preventDefault()。默认为false * @example * // 监听元素a.xx的click、tap、hover事件 * DOMUtils.on(document.querySelector("a.xx"),"click tap hover",(event, $selector)=>{ * console.log("事件触发", event, $selector) * }) * DOMUtils.on("a.xx",["click","tap","hover"],(event, $selector)=>{ * console.log("事件触发", event, $selector) * }) * @example * // 监听全局document下的子元素a.xx的click事件 * DOMUtils.on(document,"click tap hover","a.xx",(event, $selector)=>{ * console.log("事件触发", event, $selector) * }) */ on(element: PopsDOMUtilsElementEventType, eventType: string | string[], selector: string | string[] | undefined | null, handler: (this: E, event: T, $selector: E) => void, option?: PopsDOMUtilsEventListenerOption | boolean): PopsDOMUtilsAddEventListenerResult; /** * 取消绑定事件 * @param element 需要取消绑定的元素|元素数组 * @param eventType 需要取消监听的事件 * @param callback 通过DOMUtils.on绑定的事件函数 * @param option * + capture 如果在添加事件监听器时指定了useCapture为true,则在移除事件监听器时也必须指定为true * @param filter (可选)过滤函数,对元素属性上的事件进行过滤出想要删除的事件 * @example * // 取消监听元素a.xx所有的click事件 * DOMUtils.off(document.querySelector("a.xx"),"click") * DOMUtils.off("a.xx","click") */ off(element: PopsDOMUtilsElementEventType, eventType: T | T[], callback?: (this: E, event: PopsDOMUtils_Event[T]) => void, option?: EventListenerOptions | boolean, filter?: (value: PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void; /** * 取消绑定事件 * @param element 需要取消绑定的元素|元素数组 * @param eventType 需要取消监听的事件 * @param callback 通过DOMUtils.on绑定的事件函数 * @param option * + capture 如果在添加事件监听器时指定了useCapture为true,则在移除事件监听器时也必须指定为true * @param filter (可选)过滤函数,对元素属性上的事件进行过滤出想要删除的事件 * @example * // 取消监听元素a.xx的click事件 * DOMUtils.off(document.querySelector("a.xx"),"click") * DOMUtils.off("a.xx","click") */ off(element: PopsDOMUtilsElementEventType, eventType: string | string[], callback?: (this: E, event: T) => void, option?: EventListenerOptions | boolean, filter?: (value: PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void; /** * 取消绑定事件 * @param element 需要取消绑定的元素|元素数组 * @param eventType 需要取消监听的事件 * @param selector 子元素选择器 * @param callback 通过DOMUtils.on绑定的事件函数 * @param option * + capture 如果在添加事件监听器时指定了useCapture为true,则在移除事件监听器时也必须指定为true * @param filter (可选)过滤函数,对元素属性上的事件进行过滤出想要删除的事件 * @example * // 取消监听元素a.xx的click、tap、hover事件 * DOMUtils.off(document.querySelector("a.xx"),"click tap hover") * DOMUtils.off("a.xx",["click","tap","hover"]) */ off(element: PopsDOMUtilsElementEventType, eventType: T | T[], selector?: string | string[] | undefined | null, callback?: (this: E, event: PopsDOMUtils_Event[T], $selector: E) => void, option?: EventListenerOptions | boolean, filter?: (value: PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void; /** * 取消绑定事件 * @param element 需要取消绑定的元素|元素数组 * @param eventType 需要取消监听的事件 * @param selector 子元素选择器 * @param callback 通过DOMUtils.on绑定的事件函数 * @param option * + capture 如果在添加事件监听器时指定了useCapture为true,则在移除事件监听器时也必须指定为true * @param filter (可选)过滤函数,对元素属性上的事件进行过滤出想要删除的事件 * @example * // 取消监听元素a.xx的click、tap、hover事件 * DOMUtils.off(document.querySelector("a.xx"),"click tap hover") * DOMUtils.off("a.xx",["click","tap","hover"]) */ off(element: PopsDOMUtilsElementEventType, eventType: string | string[], selector?: string | string[] | undefined | null, callback?: (this: E, event: T, $selector: E) => void, option?: EventListenerOptions | boolean, filter?: (value: PopsDOMUtilsEventListenerOptionsAttribute, index: number, array: PopsDOMUtilsEventListenerOptionsAttribute[]) => boolean): void; /** * 取消绑定所有的事件 * @param element 需要取消绑定的元素|元素数组 * @param eventType (可选)需要取消监听的事件,不传入该参数则遍历所有监听的事件 */ offAll(element: PopsDOMUtilsElementEventType, eventType?: string): void; /** * 取消绑定所有的事件 * @param element 需要取消绑定的元素|元素数组 * @param eventType (可选)需要取消监听的事件,不传入该参数则遍历所有监听的事件 */ offAll(element: PopsDOMUtilsElementEventType, eventType?: PopsDOMUtils_EventType | PopsDOMUtils_EventType[]): void; /** * 等待文档加载完成后执行指定的函数 * @param callback 需要执行的函数 * @example * DOMUtils.onReady(function(){ * console.log("文档加载完毕") * }) */ onReady any>(callback: T): void; /** * 主动触发事件 * @param element 需要触发的元素|元素数组|window * @param eventType 需要触发的事件 * @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true,如果为false,则直接调用通过.on监听的callback,但是这种会让使用了$selector的没有值 * @example * // 触发元素a.xx的click事件 * DOMUtils.emit(document.querySelector("a.xx"),"click") * DOMUtils.emit("a.xx","click") * // 触发元素a.xx的click、tap、hover事件 * DOMUtils.emit(document.querySelector("a.xx"),"click tap hover") * DOMUtils.emit("a.xx",["click","tap","hover"]) */ emit(element: PopsDOMUtilsTargetElementType | Element | DocumentFragment | any[] | typeof globalThis | Window | Document, eventType: string | string[], useDispatchToTriggerEvent?: boolean): void; /** * 主动触发事件 * @param element 需要触发的元素|元素数组|window * @param eventType 需要触发的事件 * @param extraDetails 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象 * @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true,如果为false,则直接调用通过.on监听的callback(),但是这种只有一个入参,如果使用$selector则没有值 * @example * // 触发元素a.xx的click事件 * DOMUtils.emit(document.querySelector("a.xx"),"click") * DOMUtils.emit("a.xx","click") * // 触发元素a.xx的click、tap、hover事件 * DOMUtils.emit(document.querySelector("a.xx"),"click tap hover") * DOMUtils.emit("a.xx",["click","tap","hover"]) */ emit(element: PopsDOMUtilsTargetElementType | Element | DocumentFragment | any[] | typeof globalThis | Window | Document, eventType: string | string[], extraDetails?: object, useDispatchToTriggerEvent?: boolean): void; /** * 主动触发事件 * @param element 需要触发的元素|元素数组|window * @param eventType 需要触发的事件 * @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true,如果为false,则直接调用通过.on监听的callback(),但是这种只有一个入参,如果使用$selector则没有值 * @example * // 触发元素a.xx的click事件 * DOMUtils.emit(document.querySelector("a.xx"),"click") * DOMUtils.emit("a.xx","click") * // 触发元素a.xx的click、tap、hover事件 * DOMUtils.emit(document.querySelector("a.xx"),"click tap hover") * DOMUtils.emit("a.xx",["click","tap","hover"]) */ emit(element: Element | string | NodeList | any[] | Window | Document, eventType: PopsDOMUtils_EventType | PopsDOMUtils_EventType[], useDispatchToTriggerEvent?: boolean): void; /** * 主动触发事件 * @param element 需要触发的元素|元素数组|window * @param event 触发的事件 * @param extraDetails (可选)赋予触发的Event的额外属性 * @param useDispatchToTriggerEvent (可选)是否使用dispatchEvent来触发事件,默认true,如果为false,则直接调用通过.on监听的callback(),但是这种只有一个入参,如果使用$selector则没有值 * @example * DOMUtils.emit("a.xx", new Event("click")) * @example * DOMUtils.emit("a.xx", new Event("click"), { * disableHook: true * }) * @example * DOMUtils.emit("a.xx", new Event("click"), { * disableHook: true * },false) */ emit(element: Element | string | NodeList | any[] | Window | Document, event: Event, extraDetails?: object, useDispatchToTriggerEvent?: boolean): void; /** * 当按键松开时触发事件 * keydown - > keypress - > keyup * @param element 当前元素 * @param handler 事件处理函数 * @param option 配置 * @example * // 监听a.xx元素的按键松开 * DOMUtils.keyup(document.querySelector("a.xx"),()=>{ * console.log("按键松开"); * }) * DOMUtils.keyup("a.xx",()=>{ * console.log("按键松开"); * }) */ onKeyup(element: PopsDOMUtilsTargetElementType | Element | DocumentFragment | Window | Node | typeof globalThis, handler: (this: HTMLElement, event: PopsDOMUtils_Event["keyup"]) => void, option?: boolean | PopsDOMUtilsEventListenerOption): PopsDOMUtilsAddEventListenerResult | undefined; /** * 当按键按下时触发事件 * keydown - > keypress(已弃用) - > keyup * @param element 目标 * @param handler 事件处理函数 * @param option 配置 * @example * // 监听a.xx元素的按键按下 * DOMUtils.keydown(document.querySelector("a.xx"),()=>{ * console.log("按键按下"); * }) * DOMUtils.keydown("a.xx",()=>{ * console.log("按键按下"); * }) */ onKeydown(element: PopsDOMUtilsTargetElementType | Element | DocumentFragment | Window | Node | typeof globalThis, handler: (this: HTMLElement, event: PopsDOMUtils_Event["keydown"]) => void, option?: boolean | PopsDOMUtilsEventListenerOption): PopsDOMUtilsAddEventListenerResult | undefined; /** * 阻止事件传递 * * + `.preventDefault()`: 阻止事件的默认行为发生。例如,当点击一个链接时,浏览器会默认打开链接的URL,或者在输入框内输入文字 * + `.stopPropagation()`: 停止事件的传播,阻止它继续向更上层的元素冒泡,事件将不会再传播给其他的元素 * + `.stopImmediatePropagation()`: 阻止事件传播,并且还能阻止元素上的其他事件处理程序被触发 * @param event 要阻止传递的事件 * @example * DOMUtils.preventEvent(event); */ preventEvent(event: Event): false; /** * 阻止事件传递 * @param event 要阻止传递的事件 * @param onlyStopPropagation (可选)是否仅阻止事件的传播,默认false,不调用`.preventDefault()` * @example * DOMUtils.preventEvent(event, true); */ preventEvent(event: Event, onlyStopPropagation: T): T extends true ? void : false; /** * 通过监听事件来主动阻止事件的传递 * @param $el 要进行处理的元素 * @param eventNameList 要阻止的事件名|列表 * @param option (可选)配置项 * @example * DOMUtils.preventEvent(document.querySelector("a"), "click") * @example * DOMUtils.preventEvent(document.querySelector("a"), "click", undefined, { * capture: true, * }) * @example * DOMUtils.preventEvent(document, "click", "a.xxx", { * capture: true, * onlyStopPropagation: true, * }) */ preventEvent($el: Element | Document | ShadowRoot, eventNameList: string | string[], option?: { /** (可选)是否捕获,默认false */ capture?: boolean; /** (可选)是否仅阻止事件的传播,默认false,不调用`.preventDefault()` */ onlyStopPropagation?: boolean; }): { /** 移除监听事件 */ off(): void; }; /** * 通过监听事件来主动阻止事件的传递 * @param $el 要进行处理的元素 * @param eventNameList 要阻止的事件名|列表 * @param selector 子元素选择器 * @param option (可选)配置项 * @example * DOMUtils.preventEvent(document.querySelector("a"), "click") * @example * DOMUtils.preventEvent(document.querySelector("a"), "click", undefined, { * capture: true, * }) * @example * DOMUtils.preventEvent(document, "click", "a.xxx", { * capture: true, * onlyStopPropagation: true, * }) */ preventEvent($el: Element | Document | ShadowRoot, eventNameList: string | string[], selector: string | string[] | null | undefined, option?: { /** (可选)是否捕获,默认false */ capture?: boolean; /** (可选)是否仅阻止事件的传播,默认false,不调用`.preventDefault()` */ onlyStopPropagation?: boolean; }): { /** 移除监听事件 */ off(): void; }; /** * 选择器,可使用以下的额外语法 * * + :contains([text]) 作用: 找到包含指定文本内容的指定元素 * + :empty 作用:找到既没有文本内容也没有子元素的指定元素 * + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素 * @param selector 选择器 * @example * DOMUtils.selector("div:contains('测试')") * > div.xxx * @example * DOMUtils.selector("div:empty") * > div.xxx * @example * DOMUtils.selector("div:regexp('^xxxx$')") * > div.xxx */ selector(selector: K): HTMLElementTagNameMap[K] | undefined; selector(selector: string): E | undefined; /** * 选择器,可使用以下的额外语法 * * + :contains([text]) 作用: 找到包含指定文本内容的指定元素 * + :empty 作用:找到既没有文本内容也没有子元素的指定元素 * + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素 * @param selector 选择器 * @example * DOMUtils.selectorAll("div:contains('测试')") * > [div.xxx] * @example * DOMUtils.selectorAll("div:empty") * > [div.xxx] * @example * DOMUtils.selectorAll("div:regexp('^xxxx$')") * > [div.xxx] * @example * DOMUtils.selectorAll("div:regexp(/^xxx/ig)") * > [div.xxx] */ selectorAll(selector: K): HTMLElementTagNameMap[K][]; selectorAll(selector: string): E[]; /** * 匹配元素,可使用以下的额外语法 * * + :contains([text]) 作用: 找到包含指定文本内容的指定元素 * + :empty 作用:找到既没有文本内容也没有子元素的指定元素 * + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素 * @param $el 元素 * @param selector 选择器 * @example * DOMUtils.matches("div:contains('测试')") * > true * @example * DOMUtils.matches("div:empty") * > true * @example * DOMUtils.matches("div:regexp('^xxxx$')") * > true * @example * DOMUtils.matches("div:regexp(/^xxx/ig)") * > false */ matches($el: HTMLElement | Element | null | undefined, selector: string): boolean; /** * 根据选择器获取上层元素,可使用以下的额外语法 * * + :contains([text]) 作用: 找到包含指定文本内容的指定元素 * + :empty 作用:找到既没有文本内容也没有子元素的指定元素 * + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素 * @param $el 元素 * @param selector 选择器 * @example * DOMUtils.closest("div:contains('测试')") * > div.xxx * @example * DOMUtils.closest("div:empty") * > div.xxx * @example * DOMUtils.closest("div:regexp('^xxxx$')") * > div.xxxx * @example * DOMUtils.closest("div:regexp(/^xxx/ig)") * > null */ closest($el: HTMLElement | Element, selector: string): HTMLElementTagNameMap[K] | null; closest($el: HTMLElement | Element, selector: string): E | null; /** * 监input、textarea的输入框值改变的事件 */ onInput($el: HTMLInputElement | HTMLTextAreaElement, callback: (evt: InputEvent) => void | Promise, option?: PopsDOMUtilsEventListenerOption | boolean): { off: () => void; }; } declare class PopsDOMUtils extends PopsDOMUtilsEvent { /** 获取 animationend 在各个浏览器的兼容名 */ getAnimationEndNameList(): string[]; /** 获取 transitionend 在各个浏览器的兼容名 */ getTransitionEndNameList(): string[]; /** * 实现jQuery中的$().offset(); * @param element * @param calcScroll 计算滚动距离 */ offset(element: HTMLElement, calcScroll?: boolean): DOMRect; /** * 获取元素的宽度 * @param element 要获取宽度的元素 * @param isShow 是否已进行isShow,避免爆堆栈 * @param parent 用于判断是否已显示的父元素载体 * @returns 元素的宽度,单位为像素 * @example * // 获取元素a.xx的宽度 * DOMUtils.width(document.querySelector("a.xx")) * DOMUtils.width("a.xx") * > 100 * // 获取window的宽度 * DOMUtils.width(window) * > 400 * @example * // 设置元素a.xx的宽度为200 * DOMUtils.width(document.querySelector("a.xx"),200) * DOMUtils.width("a.xx",200) */ width(element: HTMLElement | string | Window | Document | typeof globalThis, isShow?: boolean, parent?: HTMLElement | ShadowRoot): number; /** * 获取元素的高度 * @param element 要获取高度的元素 * @param isShow 是否已进行isShow,避免爆堆栈 * @param parent 用于判断是否已显示的父元素载体 * @returns 元素的高度,单位为像素 * @example * // 获取元素a.xx的高度 * DOMUtils.height(document.querySelector("a.xx")) * DOMUtils.height("a.xx") * > 100 * // 获取window的高度 * DOMUtils.height(window) * > 700 * @example * // 设置元素a.xx的高度为200 * DOMUtils.height(document.querySelector("a.xx"),200) * DOMUtils.height("a.xx",200) */ height(element: HTMLElement | string | Window | Document | typeof globalThis, isShow?: boolean, parent?: HTMLElement | ShadowRoot): number; /** * 获取元素的外部宽度(包括边框和外边距) * @param element 要获取外部宽度的元素 * @param 是否已进行isShow,避免爆堆栈 * @param parent 用于判断是否已显示的父元素载体 * @returns 元素的外部宽度,单位为像素 * @example * // 获取元素a.xx的外部宽度 * DOMUtils.outerWidth(document.querySelector("a.xx")) * DOMUtils.outerWidth("a.xx") * > 100 * // 获取window的外部宽度 * DOMUtils.outerWidth(window) * > 400 */ outerWidth(element: HTMLElement | string | Window | Document, isShow?: boolean, parent?: HTMLElement | ShadowRoot): number; /** * 获取元素的外部高度(包括边框和外边距) * @param element 要获取外部高度的元素 * @param isShow 是否已进行isShow,避免爆堆栈 * @param parent 用于判断是否已显示的父元素载体 * @returns 元素的外部高度,单位为像素 * @example * // 获取元素a.xx的外部高度 * DOMUtils.outerHeight(document.querySelector("a.xx")) * DOMUtils.outerHeight("a.xx") * > 100 * // 获取window的外部高度 * DOMUtils.outerHeight(window) * > 700 */ outerHeight(element: HTMLElement | string | Window, isShow?: boolean, parent?: HTMLElement | ShadowRoot): number; /** * 添加className * @param $el 目标元素 * @param args className属性 */ addClassName($el: Element | undefined | null, ...args: (string | string[] | (() => string | string[]) | undefined | null)[]): void; /** * 删除className * @param $el 目标元素 * @param args className属性 */ removeClassName($el: Element | undefined | null, ...args: (string | string[] | (() => string | string[]) | undefined | null)[]): void; /** * 判断元素是否包含某个className * @param $el 目标元素 * @param className className属性 */ containsClassName($el: Element | undefined | null, className: string): boolean; /** * 获取元素的样式属性值 * @param $el 目标元素 * @param property 样式属性名或包含多个属性名和属性值的对象 * @example * // 获取元素a.xx的CSS属性display * DOMUtils.css(document.querySelector("a.xx"),"display"); * DOMUtils.css("a.xx","display"); * > "none" * */ css($el: PopsDOMUtilsTargetElementType, property: PopsDOMUtilsCSSPropertyType): string; /** * 获取元素的样式属性值 * @param $el 目标元素 * @param property 样式属性名或包含多个属性名和属性值的对象 * @example * // 获取元素a.xx的CSS属性display * DOMUtils.css(document.querySelector("a.xx"),"display"); * DOMUtils.css("a.xx","display"); * > "none" * */ css($el: PopsDOMUtilsTargetElementType, property: string): string; /** * 设置元素的样式属性 * @param $el 目标元素 * @param property 样式属性名或包含多个属性名和属性值的对象 * @param value 样式属性值 * @example * // 设置元素a.xx的CSS属性display为block * DOMUtils.css(document.querySelector("a.xx"),"display","block"); * DOMUtils.css(document.querySelector("a.xx"),"display","block !important"); * DOMUtils.css("a.xx","display","block"); * DOMUtils.css("a.xx","display","block !important"); * @example * // 设置元素a.xx的CSS属性top为10px * DOMUtils.css(document.querySelector("a.xx"),"top","10px"); * DOMUtils.css(document.querySelector("a.xx"),"top",10); * */ css($el: PopsDOMUtilsTargetElementType, property: PopsDOMUtilsCSSPropertyType & string, value: string | number): string; /** * 设置元素的样式属性 * @param $el 目标元素 * @param property 样式属性名或包含多个属性名和属性值的对象 * @param value 样式属性值 * @example * // 设置元素a.xx的CSS属性display为block * DOMUtils.css(document.querySelector("a.xx"),{ display: "block" }}); * DOMUtils.css(document.querySelector("a.xx"),{ display: "block !important" }}); * @example * // 设置元素a.xx的CSS属性top为10px * DOMUtils.css(document.querySelector("a.xx"),{ top: "10px" }); * DOMUtils.css(document.querySelector("a.xx"),{ top: 10 }); * */ css($el: PopsDOMUtilsTargetElementType, property: PopsDOMUtilsCSSProperty | { [key: string]: string | number; } | string): string; /** * 创建元素 * @param tagName 标签名 * @param property 属性 * @param attributes 元素上的自定义属性 * @example * // 创建一个DIV元素,且属性class为xxx * DOMUtils.createElement("div",undefined,{ class:"xxx" }); * >
* @example * // 创建一个DIV元素 * DOMUtils.createElement("div"); * >
* @example * // 创建一个DIV元素 * DOMUtils.createElement("div","测试"); * >
测试
*/ createElement( /** 元素名 */ tagName: K, /** 属性 */ property?: ({ [P in keyof HTMLElementTagNameMap[K]]?: HTMLElementTagNameMap[K][P] extends string | boolean | number ? HTMLElementTagNameMap[K][P] : never; } & { [key: string]: any; }) | string, /** 自定义属性 */ attributes?: PopsDOMUtilsCreateElementAttributesMap): HTMLElementTagNameMap[K]; /** * 字符串转HTMLElement * @param elementString * @returns */ parseTextToDOM(elementString: string): R; /** * 获取文字的位置信息 * @param input 输入框 * @param selectionStart 起始位置 * @param selectionEnd 结束位置 * @param debug 是否是调试模式 * + true 不删除临时节点元素 * + false 删除临时节点元素 */ getTextBoundingRect(input: HTMLInputElement | HTMLTextAreaElement, selectionStart: number | string, selectionEnd: number | string, debug: boolean): DOMRect; /** * 使用className来隐藏元素 * @param ele * @param isImportant 是否使用!important */ cssHide(ele: Element | null, isImportant?: boolean): void; /** * cssHide的反向使用 * @param ele */ cssShow(ele: Element | null): void; /** * 将字符串转为Element元素 * @param html * @param useParser 是否使用DOMParser来生成元素,有些时候通过DOMParser生成的元素有点问题 * + true 使用DOMPraser来转换字符串 * + false (默认)创建一个div,里面放入字符串,然后提取firstChild * @param isComplete 是否是完整的 * + true 如果useParser为true,那么返回整个使用DOMParser转换成的Document * 如果useParser为false,返回一个DIV元素,DIV元素内包裹着需要转换的字符串 * + false (默认)如果useParser为true,那么返回整个使用DOMParser转换成的Document的body * 如果useParser为false,返回一个DIV元素的firstChild * @example * // 将字符串转为Element元素 * DOMUtils.parseHTML("") * > * @example * // 使用DOMParser将字符串转为Element元素 * DOMUtils.parseHTML("",true) * > * @example * // 由于需要转换的元素是多个元素,将字符串转为完整的Element元素 * DOMUtils.parseHTML("",false, true) * >
* @example * // 由于需要转换的元素是多个元素,使用DOMParser将字符串转为完整的Element元素 * DOMUtils.parseHTML("",true, true) * > #document */ toElement(html: string, useParser?: T1, isComplete?: T2): ParseHTMLReturnType; /** * 函数在元素内部末尾添加子元素或HTML字符串 * @param element 目标元素 * @param content 子元素或HTML字符串 * @example * // 元素a.xx的内部末尾添加一个元素 * DOMUtils.append(document.querySelector("a.xx"), document.querySelector("b.xx")) * DOMUtils.append("a.xx","'") * */ append(element: Element | Node | ShadowRoot | HTMLElement | string, content: HTMLElement | string | (HTMLElement | string | Element)[] | NodeList): void; /** * 把元素标签添加到head内 */ appendHead($ele: HTMLElement): void; /** * 把元素添加进body内 * @param $ele */ appendBody($ele: HTMLElement): void; /** * 判断元素是否已显示或已连接 * @param element */ isShow(element: HTMLElement): boolean; /** * 用于显示元素并获取它的高度宽度等其它属性 * @param $ele * @param parent 父元素 */ showElement($ele: HTMLElement, ownParent?: Node): { /** * 强制显示的克隆的元素 */ cloneNode: HTMLElement; /** * 恢复修改的style */ recovery(): void; }; /** * 获取元素上的Float格式的属性px * @param element * @param styleName style名 */ getStyleValue(element: HTMLElement | CSSStyleDeclaration, styleName: string): number; /** * 在元素前面添加兄弟元素或HTML字符串 * @param element 目标元素 * @param content 兄弟元素或HTML字符串 * @example * // 元素a.xx前面添加一个元素 * DOMUtils.before(document.querySelector("a.xx"),document.querySelector("b.xx")) * DOMUtils.before("a.xx","'") * */ before(element: HTMLElement | Element | string, content: HTMLElement | string): void; /** * 在元素后面添加兄弟元素或HTML字符串 * @param element 目标元素 * @param content 兄弟元素或HTML字符串 * @example * // 元素a.xx后面添加一个元素 * DOMUtils.after(document.querySelector("a.xx"),document.querySelector("b.xx")) * DOMUtils.after("a.xx","'") * */ after(element: HTMLElement | Element | string, content: HTMLElement | string): void; /** * 获取CSS Rule * @param sheet * @returns */ getKeyFrames(sheet: CSSStyleSheet): {}; /** * 颜色转换函数 * @method hexToRgb hex 颜色转 rgb 颜色 * @method rgbToHex rgb 颜色转 Hex 颜色 * @method getDarkColor 加深颜色值 * @method getLightColor 变浅颜色值 */ calcColor(): { hexToRgb: (str: string) => any; rgbToHex: (r: any, g: any, b: any) => string; getDarkColor: (color: string, level: number) => string; getLightColor: (color: string, level: number) => string; }; /** * 获取移动元素的transform偏移 * @param element 元素 */ getTransform(element: HTMLElement): { transformLeft: number; transformTop: number; }; /** * 移除元素(包括它和内部使用.on添加的监听事件) * @param $el 目标元素,可以是数组、单个元素、NodeList、元素选择器 * @example * DOMUtils.remove(document.querySelector("a.xx")) * DOMUtils.remove(document.querySelectorAll("a.xx")) * DOMUtils.remove("a.xx") * DOMUtils.remove([a.xxx, div.xxx, span.xxx]) * */ remove($el: PopsDOMUtilsTargetElementType | Element | null | undefined): void; } declare const popsDOMUtils: PopsDOMUtils; export { popsDOMUtils };