VueUse
先安装VueUse
<template><header><div class="left">left</div><div class="center">center</div><div class="right">right</div></header><div><button @click="changeSize(36)">大(36)</button><button @click="changeSize(24)">中(24)</button><button @click="changeSize(12)">小(12)</button></div>
</template><script setup lang="ts">
import { useCssVar } from '@vueuse/core'
const changeSize = (number:number) => {const size = useCssVar('--size')size.value = number + 'px'
}
</script><style scoped lang="less">
:root {--size: 12px;
}
header {display: flex;.left {width: 100px;height: 50px;font-size: var(--size);background: lightblue;}.center {flex: 1;height: 50px;font-size: var(--size);background: lightcoral;}.right {width: 100px;height: 50px;font-size: var(--size);background: lightgoldenrodyellow;}
}
</style>
底层原理
const changeSize = (number:number) => {document.documentElement.style.setProperty('--size',number + 'px')// document.documentElement.style.getPropertyValue('--size')// const size = useCssVar('--size')// size.value = number + 'px'
}
常见问题
发现刷新后失效,此时我们可以保留修改到localStorage中。如果想要全局修改颜色,底层也是一样的道理。