课程名称:基于Vue3最新标准,实现后台前端综合解
课程章节: 第一章
课程讲师:Sunday
课程内容
在 vue 3.2 最新更新中,除了 响应式变化 之外,还有另外一个很重要的更新,那就是 组件状态驱动的动态 CSS 值
<template>
...
<el-avatar :size="logoHeight" >
...
</template>
<script setup>
...
const logoHeight = 44
</script>
<style scoped>
.logo-container {
height: v-bind(logoHeight) + 'px';
...
}
</style>接下来是 动画处理 transition-group
<template> <el-breadcrumb class="breadcrumb" separator="/"> <transition-group name="breadcrumb"> ... </transition-group> </el-breadcrumb> </template>
.breadcrumb-enter-active,
.breadcrumb-leave-active {
transition: all 0.5s;
}
.breadcrumb-enter-from,
.breadcrumb-leave-active {
opacity: 0;
transform: translateX(20px);
}
.breadcrumb-leave-active {
position: absolute;
}接下来说下 自定义主题
在代码中 需要进行自定义主题变更 成 menu 菜单背景色
其实实现原理也是通过vuex
<el-menu :default-active="activeMenu" :collapse="!$store.getters.sidebarOpened" :background-color="$store.getters.cssVar.menuBg" :text-color="$store.getters.cssVar.menuText" :active-text-color="$store.getters.cssVar.menuActiveText" :unique-opened="true" router >
在el-menu 里面设置 v-model 绑定vuex
import variables from '@/styles/variables.scss'
import { MAIN_COLOR } from '@/constant'
import { getItem } from '@/utils/storage'
import { generateColors } from '@/utils/theme'
const getters = {
...
cssVar: state => {
return {
...variables,
...generateColors(getItem(MAIN_COLOR))
}
},
...}
export default getters
但在开发过程中 没有进行变更
<sidebar
id="guide-sidebar"
class="sidebar-container"
:style="{ backgroundColor: $store.getters.cssVar.menuBg }"
/>import variables from '@/styles/variables.scss'export default {
namespaced: true,
state: () => ({
...
variables }),
mutations: {
/**
* 设置主题色
*/
setMainColor(state, newColor) {
...
state.variables.menuBg = newColor ...
}
}}这个是因为 getters 中没有监听到 依赖值的响应变化,所以我们希望修改依赖值

随时随地看视频