update 0.13.2
This commit is contained in:
		| @@ -33,15 +33,34 @@ export interface TransformItem { | ||||
| 	animateName: string; | ||||
| 	keyframes: TransformItemObj[]; | ||||
| } | ||||
|  | ||||
| export const styleSheetId = 'dooringx_dynamic_style'; | ||||
| export class AnimateFactory { | ||||
| 	constructor(public customAnimateName: Array<CustomAnimateObj> = []) {} | ||||
|  | ||||
| 	getCustomAnimateName() { | ||||
| 		return this.customAnimateName; | ||||
| 	} | ||||
| 	searchSheet(): null | CSSStyleSheet { | ||||
| 		let sheet: null | CSSStyleSheet = null; | ||||
| 		Array.from(document.styleSheets).forEach((v) => { | ||||
| 			const node = v?.ownerNode as Element; | ||||
| 			if (node?.id === styleSheetId) { | ||||
| 				sheet = v; | ||||
| 			} | ||||
| 		}); | ||||
| 		return sheet; | ||||
| 	} | ||||
|  | ||||
| 	getStyleSheets() { | ||||
| 		return document.styleSheets; | ||||
| 		let sheet = this.searchSheet(); | ||||
| 		if (!sheet) { | ||||
| 			let style = document.createElement('style'); | ||||
| 			style.id = styleSheetId; | ||||
| 			style.appendChild(document.createTextNode('')); | ||||
| 			document.head.appendChild(style); | ||||
| 		} | ||||
| 		sheet = this.searchSheet(); | ||||
| 		return sheet; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| @@ -51,32 +70,8 @@ export class AnimateFactory { | ||||
| 	 * @memberof AnimateFactory | ||||
| 	 */ | ||||
| 	inserKeyframeAnimate(ruleText: string) { | ||||
| 		const sheets = this.getStyleSheets(); | ||||
| 		if (sheets.length === 0) { | ||||
| 			let style = document.createElement('style'); | ||||
| 			style.appendChild(document.createTextNode('')); | ||||
| 			document.head.appendChild(style); | ||||
| 		} | ||||
| 		// const len = sheets.length; | ||||
| 		// let ss: number | null = null; | ||||
| 		// let st: number | null = null; | ||||
| 		// for (let i = 0; i < len; i++) { | ||||
| 		// 	for (let k = 0; k < sheets[i].cssRules.length; k++) { | ||||
| 		// 		const rule = sheets[i].cssRules[k] as CSSKeyframesRule; | ||||
| 		// 		const name = rule?.name; | ||||
| 		// 		if (name && name === keyframeName) { | ||||
| 		// 			// 删除该keyframe | ||||
| 		// 			ss = i; | ||||
| 		// 			st = k; | ||||
| 		// 		} | ||||
| 		// 	} | ||||
| 		// } | ||||
| 		// if (ss !== null && st !== null) { | ||||
| 		// 	sheets[ss].deleteRule(st); | ||||
| 		// } | ||||
| 		// let sheet = sheets[ss ? ss : sheets.length - 1] as CSSStyleSheet; | ||||
| 		let sheet = sheets[0] as CSSStyleSheet; // 末尾的经常存在重复覆盖的问题 | ||||
| 		sheet.insertRule(ruleText, sheet.cssRules.length); | ||||
| 		const sheet = this.getStyleSheets(); | ||||
| 		if (sheet) sheet.insertRule(ruleText, sheet.cssRules.length); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| @@ -88,21 +83,20 @@ export class AnimateFactory { | ||||
| 	 */ | ||||
| 	deleteKeyFrameAnimate(animateName: string) { | ||||
| 		const sheets = this.getStyleSheets(); | ||||
| 		if (sheets.length === 0) { | ||||
| 		if (!sheets) { | ||||
| 			return; | ||||
| 		} | ||||
| 		const sheet = sheets[0] as CSSStyleSheet; | ||||
| 		const len = sheet.cssRules.length; | ||||
| 		const len = sheets.cssRules.length; | ||||
| 		let ss = null; | ||||
| 		for (let i = 0; i < len; i++) { | ||||
| 			const rule = sheet.cssRules[i] as CSSKeyframesRule; | ||||
| 			const rule = sheets.cssRules[i] as CSSKeyframesRule; | ||||
| 			const name = rule?.name; | ||||
| 			if (name && name === animateName) { | ||||
| 				ss = i; | ||||
| 			} | ||||
| 		} | ||||
| 		if (ss !== null) { | ||||
| 			sheet.deleteRule(ss); | ||||
| 			sheets.deleteRule(ss); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 yehuozhili
					yehuozhili