add tmp
This commit is contained in:
42
packages/dooringx-lib/src/core/dynamicAnimate/index.ts
Normal file
42
packages/dooringx-lib/src/core/dynamicAnimate/index.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
// 批量情况
|
||||
|
||||
export class DynamicAnimate {
|
||||
getStyleSheets() {
|
||||
return document.styleSheets;
|
||||
}
|
||||
|
||||
inserKeyframeAnimate(ruleText: string, keyframeName: 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;
|
||||
sheet.insertRule(ruleText, sheet.rules ? sheet.rules.length : sheet.cssRules.length);
|
||||
}
|
||||
|
||||
fromObjInsertKeyFrame(obj: Record<string, string>) {
|
||||
// name 唯一
|
||||
Object.keys(obj).forEach((v) => {
|
||||
this.inserKeyframeAnimate(obj[v], v);
|
||||
});
|
||||
}
|
||||
}
|
@@ -27,6 +27,7 @@ export interface AnimateItem {
|
||||
animationIterationCount: string;
|
||||
animationTimingFunction: string;
|
||||
isCustom?: boolean;
|
||||
customKeyFrame?: string;
|
||||
}
|
||||
|
||||
export interface IBlockType {
|
||||
|
Reference in New Issue
Block a user