Skip to content

利用:root切换主题

约 433 字大约 1 分钟

JavaScriptVue

2023-9-12

在尝试几种切换主题方法后,感觉利用root切换主题更加方便,将实现过程记录一下。

:root是CSS伪类匹配文档树的根元素,除了优先级更高之外,与html选择器相同。可以给:root添加them属性,并通过更改them属性值更改主题。

1.主题配置

为了方便后续开发,可以将项目分为两个css文件,public.cssthem.css,而them.css则存放两套主题颜色。

/*them.css*/
:root[theme="dark"] {
    --div-background-color: #1a1a1a;
    /*更多颜色...*/
}
:root[theme="light"] {
    --div-background-color: #fdfdfd;
    /*更多颜色...*/
}

2.state

我们可以用一个state保存当前主题类别,同时分别需要一个gettermutation用于后续获取them与更改them。

3.切换按钮

为了让切换按钮更加生动,可以模仿Vue官网的切换按钮。在按钮点击后,调用mutations里的changeThemeMutations,同应该在按钮组件渲染时,获取主题类型且按钮保持相同类型状态,还需要在组件 created阶段获取them值且改变按钮相应状态。

4.效果

img.png