/** * 管理浏览器scale */ import { getStorage, setStorage } from '@/Storage'; import { ObserverStateManager } from '../observerStateManager'; const defaultScale = 1; class ZoomManagerClass { private scale = defaultScale; setSacle(scale: number) { this.preprocess(scale); ObserverStateManager.update(scale); this.scale = scale; } getScale() { return getStorage('zoom-proportion') ?? defaultScale; } initScale() { this.setSacle(this.getScale()); } /** * 抵消body scale * * @param {(number | string | null)} size * @return {*} * @memberof ZoomManagerClass */ negativeScale(size: number | string | null) { if (!size) { return 0; } const bodyScale = Number(this.getScale()); const numberVal = Number(size); if (bodyScale && numberVal) { size = numberVal / bodyScale; } return size; } private preprocess(scale: number) { // 执行副作用 (document.body.style as any).zoom = scale; setStorage('zoom-proportion', scale); } } export const ZoomManager = new ZoomManagerClass();