美文网首页
vue+scss主题切换,换肤(通过setAttribute)

vue+scss主题切换,换肤(通过setAttribute)

作者: 新世界的冒险 | 来源:发表于2023-02-09 11:08 被阅读0次
image.png
动画.gif

1、新建theme.scss文件

// 主题1
$background-color-black: #0D2865;
$background-color-white: #eba5a5;
$font-color-white: #f1ff77;
$font-color-black: #ea4141;
// 主题2
$background2-color-black: #75084f;
$background2-color-white: #998a00;
$font2-color-white: #1e3dea;
$font2-color-black: #ffffff;

2、新建mixin.scss文件,进行主题封装

@import './theme.scss';
@mixin bg_color($color) {
  background-color: $color;
  [data-theme="black"] & {
    background-color: $background-color-black;
  }
  [data-theme="white"] & {
    background-color: $background-color-white;
  }
}
@mixin font_color($color) {
  color: $color;
  [data-theme="black"] & {
    color: $font-color-black;
  }
  [data-theme="white"] & {
    color: $font-color-white;
  }
}
@mixin bg2_color($color) {
  background-color: $color;
  [data-theme="black"] & {
    background-color: $background2-color-black;
  }
  [data-theme="white"] & {
    background-color: $background2-color-white;
  }
}
@mixin font2_color($color) {
  color: $color;
  [data-theme="black"] & {
    color: $font2-color-black;
  }
  [data-theme="white"] & {
    color: $font2-color-white;
  }
}

3、操作展示文件test.vue

<template>
  <div class="about">
    <button @click="toggoleTheme">点击变色</button>
    <div class="changebox">这是一个变色盒子</div>
    <div class="changebox2">这是一个变色盒子2</div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      theme: 'black'
    }
  },
  methods: {
    // 当前分为white主题和black主题进行切换 
    toggoleTheme() {
      this.theme = this.theme === 'white' ? 'black' : 'white'
    // 通过setAttribute设置data-theme主题进行切换
      document.documentElement.setAttribute('data-theme', this.theme );
    }
  }
}
</script>
<style lang="scss">
@import '@/assets/mixin.scss';
.changebox {
  width: 200px;
  height: 200px;
  @include bg_color($background-color-black);
  @include font_color($font_color-black);
}
.changebox2 {
  width: 200px;
  height: 200px;
  @include bg2_color($background2-color-black);
  @include font2_color($font2_color-black);
}
</style>

相关文章

  • 界面换肤笔记

    界面换肤的两种实现方式 1.主题切换模式 创建两种主题模式 自定义属性 应用样式,通过?attr/去引用样式 切换...

  • iOS 动态更换App图标

    该功能应用的场景 1、白天/夜间模式切换,在切换App主色调同时切换App图标。 2、各类皮肤主题(淘宝就可换肤)...

  • Android主题换肤 无缝切换

    今天再给大家带来一篇干货。 Android的主题换肤 ,可插件化提供皮肤包,无需Activity的重启直接实现无缝...

  • Android 切换主题(基础)

    参考 1、Android 切换主题以及换肤的实现 截图 1、默认打开 2、点击【换主题色】 需知 主题色运用:ma...

  • Android 切换主题(基础)

    参考 1、Android 切换主题以及换肤的实现 截图 1、默认打开 2、点击【换主题色】 需知 主题色运用:ma...

  • Android 切换主题风格(Theme换肤效果)

    参考 1、Android 切换主题以及换肤的实现 截图 1、默认打开 2、点击【换主题色】 需知 主题色运用:ma...

  • 换肤

    Android换肤功能 什么是换肤?app的皮肤,比如说黑夜模式,切换之后整体风格改变成以黑色为主题色 换了什么?...

  • Android 换肤技术

    1、前言 目前有非常多的产品支持换肤技术,比如QQ空间,各大手机厂商都支持切换主题包。 换肤技术能为公司带来经济效...

  • 关于网站切换主题色的一些思考与实现

    前言 web应用程序,切换主题,给其换肤,是一个比较常见的需求。 如何能快速的切换主题色?(只有固定的一种皮肤) ...

  • Android主题换肤框架 无缝切换

    Android-Skin-Loader 一个通过动态加载本地皮肤包进行换肤的皮肤框架 工程目录介绍 用法 1. 在...

网友评论

      本文标题:vue+scss主题切换,换肤(通过setAttribute)

      本文链接:https://www.haomeiwen.com/subject/fowckdtx.html