当前位置:   article > 正文

VUE动态切换皮肤 VUE动态切换背景图片 操作 / VUE 主题切换_vue theme

vue theme

上正文  使用:root ,var()函数实现

1. 创建皮肤或主题 css目录

 一个公共主题文件 theme.css,一个main.js引入文件theme-all.css,一个单独的 主题样式文件 theme-12.css

2. 定义css文件中所要切换的主题的 部分样式 例如 文字颜色,背景颜色,背景图,或者个图标文件等 

这里使用 背景图片作为演示 

  设置公共主题文件所需样式 theme.css ,这里我引入了自己的 12张 图片 小伙伴看清楚噢

  1. @charset "UTF-8";
  2. :root{
  3. /*--login-back-image: url(@/assets/background/bg_1.jpg);*/
  4. --login-back-image-month-1: url(@/assets/background/bg_1.jpg);
  5. --login-back-image-month-2: url(@/assets/background/bg_2.jpg);
  6. --login-back-image-month-3: url(@/assets/background/bg_3.jpg);
  7. --login-back-image-month-4: url(@/assets/background/bg_4.jpg);
  8. --login-back-image-month-5: url(@/assets/background/bg_5.jpg);
  9. --login-back-image-month-6: url(@/assets/background/bg_6.jpg);
  10. --login-back-image-month-7: url(@/assets/background/bg_7.jpg);
  11. --login-back-image-month-8: url(@/assets/background/bg_8.jpg);
  12. --login-back-image-month-9: url(@/assets/background/bg_9.jpg);
  13. --login-back-image-month-10: url(@/assets/background/bg_10.jpg);
  14. --login-back-image-month-11: url(@/assets/background/bg_11.jpg);
  15. --login-back-image-month-12: url(@/assets/background/bg_12.jpg);
  16. }

  设置单独的一个样式文件 theme-12.css, 这里我在一个文件中定义了三个主题,每个主题中背景文件不同

  1. /*公共主题部分引入*/
  2. @import url(@/assets/css/theme/theme.css);
  3. /*定义样式 主题名称*/
  4. :root[theme='month-1'] {
  5. /*登录背景图片*/
  6. --login-back-image: var(--login-back-image-month-1);
  7. --title-text-color: #498be8;
  8. }
  9. /*定义样式 主题名称*/
  10. :root[theme='month-2'] {
  11. /*登录背景图片*/
  12. --login-back-image: var(--login-back-image-month-2);
  13. --title-text-color: #498be8;
  14. }
  15. /*定义样式 主题名称*/
  16. :root[theme='month-3'] {
  17. /*登录背景图片*/
  18. --login-back-image: var(--login-back-image-month-3);
  19. --title-text-color: #498be8;
  20. }

设置所有 需要引入的 css 样式 theme-all.css

  1. @import url(@/assets/css/theme/theme.css);
  2. @import url(@/assets/css/theme/theme-12.css);

3.在你的main.js中全局引入css文件  theme-all.css

import "@/assets/css/theme/theme-all.css";

4.使用定义的 主题样式 比如 我在我的登录页xxx.vue中 引入主题中的 背景图片 就是 在 theme-12.css中定义的 --login-back-image 这个 背景图片 使用 var(--login-back-image)写入

  1. .back {
  2. width: 100%;
  3. height: 100%;
  4. background-image: var(--login-back-image);
  5. background-repeat: no-repeat;
  6. background-size: 100%;
  7. display: flex;
  8. align-items: center;
  9. }

5.定义主题切换方法,并使用 

我这里是根据日期月份 自动渲染 主题, 如果需要手动切换 ,自行再写 click事件 传入 需要的 主题样式 的名称 就行

  1. mounted() {
  2. this.setTheme();
  3. },
  4. methods: {//定义一个改变 主题文件的 方法
  5. setTheme() {
  6. //我这里是一个按时间 月 修改主题
  7. const date = new Date();
  8. let month = date.getMonth() + 1;
  9. document.documentElement.setAttribute("theme","month-"+month);
  10. }
  11. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/109014
推荐阅读
相关标签
  

闽ICP备14008679号