.table-wrapper /deep/ .el-table .el-loading-mask { background-color: #020514; }如何将上述css中固定的背景颜色根据vue.store中的变量的值动态的改变
时间: 2024-10-22 22:11:18 浏览: 16
el-table无限滚动+控制列是否显示+列排序(非json)
5星 · 资源好评率100%
这个CSS样式片段是使用了Vue.js的组件自定义深选选择器`.table-wrapper /deep/ .el-table .el-loading-mask`来设置`.el-loading-mask`元素的背景色。如果想要根据Vue Store中的变量动态改变这个颜色,你需要结合Vuex的状态管理以及Vue的响应式特性来实现。
首先,在Vue项目中的store模块里,创建一个名为`themeVariables`的对象,并存储背景色的key-value对,比如:
```javascript
// store/index.js 或者 store/theme.js
export const state = () => ({
theme: {
loadingMaskColor: '#020514', // 初始颜色
},
});
```
然后,你可以通过mutation更新这个状态:
```javascript
const mutations = {
SET_LOADING_MASK_COLOR(state, color) {
state.theme.loadingMaskColor = color;
},
};
```
接下来,在Vue组件中,通过`mapState`从store获取主题颜色,并绑定到需要更改背景色的元素上。例如,假设你有一个表格组件:
```html
<template>
<div class="table-wrapper">
<el-table :loading="isLoading" ref="loadingMask">
<!-- ... -->
</el-table>
</div>
</template>
<script>
import { mapState } from 'vuex';
export default {
computed: {
...mapState(['theme/loadingMaskColor']),
isLoading() {
return this.$store.state.theme.isLoading; // 假设isLoading也是一个store里的状态
},
},
mounted() {
this.$refs.loadingMask.addEventListener('show', () => {
this.$store.commit('SET_LOADING_MASK_COLOR', this.loadingMaskColor); // 动态设置颜色
});
},
beforeDestroy() {
this.$refs.loadingMask.removeEventListener('show', ...);
},
};
</script>
```
当`isLoading`变为`true`时,`SHOW`事件会触发,此时`SET_LOADING_MASK_COLOR` mutation会被调用,`loadingMaskColor`的值会替换原来的固定颜色值。
阅读全文