vue如何定义全局颜色变量并用js修改颜色三种方法

 更新时间:2025年05月30日 09:43:43   作者:尚梦  
在Vue中定义一个全局变量是非常常见的需求,这样可以在多个组件中共享相同的数据,这篇文章主要介绍了vue如何定义全局颜色变量并用js修改颜色的三种方法,需要的朋友可以参考下

方法一:使用 CSS 变量 (Custom Properties)

步骤:

  • 定义全局 CSS 变量: 在全局样式文件(如 app.css 或 style.css)中定义变量。

    css

    深色版本

    :root {
      --primary-color: #42b983;
      --secondary-color: #35495e;
    }
  • 在组件中使用这些变量: 在 Vue 组件中使用这些变量

    <template>
      <div :style="{ color: primaryColor }">Hello World</div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          primaryColor: 'var(--primary-color)'
        };
      }
    }
    </script>
    
    <style scoped>
    .example {
      background-color: var(--primary-color);
      color: var(--secondary-color);
    }
    </style>
  • 通过 JavaScript 修改 CSS 变量: 你可以在 Vue 组件的生命周期钩子或方法中动态修改这些变量。

    <template>
      <div>
        <button @click="changeColor">Change Color</button>
        <div :style="{ color: primaryColor }">Hello World</div>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          primaryColor: 'var(--primary-color)'
        };
      },
      methods: {
        changeColor() {
          document.documentElement.style.setProperty('--primary-color', '#ff0000');
          this.primaryColor = 'var(--primary-color)';
        }
      }
    }
    </script>

方法二:使用 Vuex 管理状态

步骤:

  • 安装并设置 Vuex: 如果你还没有安装 Vuex,可以使用以下命令安装:

    npm install vuex --save
  • 在 Vuex store 中定义颜色状态

    javascript

    深色版本

    // store/index.js
    import Vue from 'vue';
    import Vuex from 'vuex';
    
    Vue.use(Vuex);
    
    export default new Vuex.Store({
      state: {
        primaryColor: '#42b983',
        secondaryColor: '#35495e'
      },
      mutations: {
        setPrimaryColor(state, color) {
          state.primaryColor = color;
        }
      }
    });
  • 在组件中使用这些颜色

    html

    深色版本

    <template>
      <div>
        <button @click="changeColor">Change Color</button>
        <div :style="{ color: primaryColor }">Hello World</div>
      </div>
    </template>
    
    <script>
    export default {
      computed: {
        primaryColor() {
          return this.$store.state.primaryColor;
        }
      },
      methods: {
        changeColor() {
          this.$store.commit('setPrimaryColor', '#ff0000');
        }
      }
    }
    </script>

方法三:使用 Vue 插件

步骤:

  • 创建一个 Vue 插件来管理颜色

    javascript

    深色版本

    // plugins/colorPlugin.js
    export default {
      install(Vue) {
        Vue.prototype.$colors = {
          primary: '#42b983',
          secondary: '#35495e'
        };
    
        Vue.prototype.$setColor = function(key, value) {
          this.$colors[key] = value;
        };
      }
    };
  • 在主文件中注册插件

    javascript

    深色版本

    // main.js
    import Vue from 'vue';
    import App from './App.vue';
    import colorPlugin from './plugins/colorPlugin';
    
    Vue.config.productionTip = false;
    
    Vue.use(colorPlugin);
    
    new Vue({
      render: h => h(App),
    }).$mount('#app');
  • 在组件中使用这些颜色

    <template>
      <div>
        <button @click="changeColor">Change Color</button>
        <div :style="{ color: primaryColor }">Hello World</div>
      </div>
    </template>
    
    <script>
    export default {
      computed: {
        primaryColor() {
          return this.$colors.primary;
        }
      },
      methods: {
        changeColor() {
          this.$setColor('primary', '#ff0000');
        }
      }
    }
    </script>

总结 

到此这篇关于vue如何定义全局颜色变量并用js修改颜色三种方法的文章就介绍到这了,更多相关vue定义全局颜色变量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue.js 的过滤器你了解多少

    Vue.js 的过滤器你了解多少

    这篇文章主要为大家详细介绍了Vue.js 的过滤器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • vue中使用echarts制作圆环图的实例代码

    vue中使用echarts制作圆环图的实例代码

    这篇文章主要介绍了vue中使用echarts制作圆环图的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • Vue.js双向绑定实现原理详解

    Vue.js双向绑定实现原理详解

    这篇文章主要为大家详细介绍了Vue.js双向绑定实现原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Vue配合iView实现省市二级联动的示例代码

    Vue配合iView实现省市二级联动的示例代码

    本篇文章主要介绍了Vue配合iView实现省市二级联动的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • vue3 腾讯地图设置签到范围并获取经纬度的实现代码

    vue3 腾讯地图设置签到范围并获取经纬度的实现代码

    本文给大家介绍vue3 腾讯地图设置签到范围并获取经纬度的实现代码,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2022-05-05
  • vue.js中Vue-router 2.0基础实践教程

    vue.js中Vue-router 2.0基础实践教程

    这篇文章主要给大家介绍了关于vue.js中Vue-router 2.0基础实践的相关资料,其中包括vue-router 2.0的基础用法、动态路由匹配、嵌套路由、编程式路由、命名路由以及命名视图等相关知识,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • Vue虚拟Dom到真实Dom的转换

    Vue虚拟Dom到真实Dom的转换

    本文主要介绍了Vue虚拟Dom到真实Dom的转换,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • 解决vuex刷新数据消失问题

    解决vuex刷新数据消失问题

    这篇文章主要介绍了解决vuex刷新数据消失问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue-test-utils初使用详解

    vue-test-utils初使用详解

    这篇文章主要介绍了vue-test-utils初使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Electron主进程(Main Process)与渲染进程(Renderer Process)通信详解

    Electron主进程(Main Process)与渲染进程(Renderer Process)通信详解

    这篇文章主要介绍了Electron主进程(Main Process)与渲染进程(Renderer Process)通信,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03

最新评论