当前位置:   article > 正文

CSS 多主题切换思路_ccs主题 如何更换

ccs主题 如何更换

前言

本篇仅提供多主题切换思路,示例简单且清晰。

实现

步骤一:多主题(颜色)定义

  • 定义根伪类 :root,代码第 2 和 7 行。分别定义了默认和带参数的伪类;
  • 定义 CSS 变量,注意变量名需要以两个减号(--)开始;
  • 注意此处仅设置了两个主题,多主题同理;
/* 默认 */
:root {
    --box-bg-01: yellow;
    --box-bg-02: blue;
}
/* 带参数 myTheme02 */
:root[my-theme=myTheme02] {
    --box-bg-01: red;
    --box-bg-02: green;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

步骤二:主题切换

  • 直接控制 html 根节点;
changeTheme() {
    let type = document.documentElement.getAttribute('my-theme')==='myTheme02' ? '' : 'myTheme02';
    document.documentElement.setAttribute('my-theme', type);
}
  • 1
  • 2
  • 3
  • 4

默认主题:可看到下图右侧 html 标签上无其它属性。样式 root 中有可查看CSS变量。
在这里插入图片描述

带参主题 myTheme02:可看到下图右侧 html 标签上有属性my-theme样式 root 中有可查看CSS变量。

在这里插入图片描述

效果

在这里插入图片描述

完整代码

  • 代码 19 - 30 行,注意 :root 定义在全局样式中;
<template>
    <div>
        <div><button @click="changeTheme">主题切换</button></div>
        <div class="box box01"></div>
        <div class="box box02"></div>
    </div>
</template>

<script>
export default {
    methods: {
        changeTheme() {
            let type = document.documentElement.getAttribute('my-theme')==='myTheme02' ? '' : 'myTheme02';
            document.documentElement.setAttribute('my-theme', type);
        }
    }
}
</script>
<style>
/* 默认 */
:root {
    --box-bg-01: yellow;
    --box-bg-02: blue;
}
/* 带参数的 */
:root[my-theme=myTheme02] {
    --box-bg-01: red;
    --box-bg-02: green;
}
</style>
<style lang="stylus" scoped>
.box {
    display: inline-block;
    width: 100px;
    height: 100px;
}
.box01 {
    background: var(--box-bg-01);
}
.box02 {
    background: var(--box-bg-02);
}
</style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/84860
推荐阅读
相关标签
  

闽ICP备14008679号