vue3-core/packages/runtime-dom/src/modules/style.ts

24 lines
547 B
TypeScript
Raw Normal View History

import { isString } from '@vue/shared'
2019-10-16 22:31:40 +08:00
type Style = string | Partial<CSSStyleDeclaration> | null
export function patchStyle(el: Element, prev: Style, next: Style) {
const style = (el as HTMLElement).style
2018-09-19 23:35:38 +08:00
if (!next) {
el.removeAttribute('style')
} else if (isString(next)) {
2018-09-19 23:35:38 +08:00
style.cssText = next
} else {
2018-09-25 07:11:14 +08:00
for (const key in next) {
2019-10-16 22:31:40 +08:00
style[key] = next[key] as string
2018-09-19 23:35:38 +08:00
}
if (prev && !isString(prev)) {
2018-09-19 23:35:38 +08:00
for (const key in prev) {
2018-09-25 07:11:14 +08:00
if (!next[key]) {
2018-09-25 06:51:58 +08:00
style[key] = ''
2018-09-19 23:35:38 +08:00
}
}
}
}
}