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 };