支持暗黑主题切换

This commit is contained in:
chaos-zhu 2024-08-17 23:48:22 +08:00
parent 23e0140544
commit 5dddc31bfa
6 changed files with 28 additions and 44 deletions

View File

@ -14,7 +14,7 @@
html.dark { html.dark {
// * admin // * admin
--bg-color: #000; --bg-color: #000;
--v-main-bg-color: #181818; --main-bg-color: #181818;
--v-border-light: 1px solid #4c4c4d; --v-border-light: 1px solid #4c4c4d;
body { body {
@ -24,20 +24,20 @@ html.dark {
.login_container { .login_container {
// background: rgba(171, 181, 196, 0.3); // background: rgba(171, 181, 196, 0.3);
.login_box { .login_box {
background-color: var(--v-main-bg-color) !important; background-color: var(--main-bg-color) !important;
} }
} }
.top_bar_container { .top_bar_container {
background-color: var(--bg-color) !important; background-color: var(--main-bg-color) !important;
} }
.router_box { .router_box {
background-color: var(--v-main-bg-color) !important; background-color: var(--main-bg-color) !important;
} }
.aside_container { .aside_container {
background-color: var(--v-main-bg-color) !important; background-color: var(--main-bg-color) !important;
} }
.terminal_top { .terminal_top {
@ -66,7 +66,7 @@ html.dark {
} }
.app-main-container { .app-main-container {
background-color: var(--v-main-bg-color) !important; background-color: var(--main-bg-color) !important;
.card { .card {
background-color: var(--bg-color) !important; background-color: var(--bg-color) !important;
@ -75,7 +75,7 @@ html.dark {
.layout-footer-container { .layout-footer-container {
color: var(--el-text-color-regular) !important; color: var(--el-text-color-regular) !important;
background-color: var(--v-main-bg-color) !important; background-color: var(--main-bg-color) !important;
} }
.fold-unfold { .fold-unfold {
@ -128,7 +128,7 @@ html.dark {
.el-tabs__item.is-active { .el-tabs__item.is-active {
color: var(--el-color-primary); color: var(--el-color-primary);
background-color: var(--v-main-bg-color) !important; background-color: var(--main-bg-color) !important;
.el-icon { .el-icon {
color: var(--el-color-primary) !important; color: var(--el-color-primary) !important;
@ -136,7 +136,7 @@ html.dark {
} }
.el-tabs__item:not(.is_active):hover { .el-tabs__item:not(.is_active):hover {
background-color: var(--v-main-bg-color) !important; background-color: var(--main-bg-color) !important;
.el-icon { .el-icon {
color: var(--el-color-primary) !important; color: var(--el-color-primary) !important;

View File

@ -9,7 +9,6 @@
:active-icon="Moon" :active-icon="Moon"
:inactive-icon="Sunny" :inactive-icon="Sunny"
class="dark_switch" class="dark_switch"
@change="setTheme"
/> />
<el-button <el-button
type="info" type="info"
@ -62,15 +61,14 @@ let visible = ref(false)
let checkVersionErr = ref(false) let checkVersionErr = ref(false)
let currentVersion = ref(`v${ packageJson.version }`) let currentVersion = ref(`v${ packageJson.version }`)
let latestVersion = ref(null) let latestVersion = ref(null)
// let isDark = ref(true)
let isNew = computed(() => latestVersion.value && latestVersion.value !== currentVersion.value) let isNew = computed(() => latestVersion.value && latestVersion.value !== currentVersion.value)
let user = computed(() => $store.user) let user = computed(() => $store.user)
let title = computed(() => $store.title) let title = computed(() => $store.title)
let isDark = computed({ let isDark = computed({
get: () => $store.isDark, get: () => $store.isDark,
set: (value) => { set: (isDark) => {
$store.setTheme({ isDark: value }) $store.setTheme(isDark)
} }
}) })

View File

@ -114,6 +114,10 @@ const useStore = defineStore({
setTheme(isDark) { setTheme(isDark) {
// $store.setThemeConfig({ isDark: val }) // $store.setThemeConfig({ isDark: val })
const html = document.documentElement const html = document.documentElement
document.startViewTransition(() => {
// 在 startViewTransition 中修改 DOM 状态产生动画
document.documentElement.classList.toggle('dark')
})
if (isDark) html.setAttribute('class', 'dark') if (isDark) html.setAttribute('class', 'dark')
else html.setAttribute('class', '') else html.setAttribute('class', '')
localStorage.setItem('isDark', isDark) localStorage.setItem('isDark', isDark)
@ -126,7 +130,7 @@ const useStore = defineStore({
} else { } else {
const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)') const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)')
const systemTheme = prefersDarkScheme.matches const systemTheme = prefersDarkScheme.matches
// console.log('当前系统使用的是深色模式:', systemTheme ? '是' : '否') console.log('当前系统使用的是深色模式:', systemTheme ? '是' : '否')
isDark = systemTheme isDark = systemTheme
} }
this.setTheme(isDark) this.setTheme(isDark)

View File

@ -52,7 +52,7 @@ onBeforeMount(async () => {
min-height: calc(100vh - 60px - 20px); min-height: calc(100vh - 60px - 20px);
background-color: #fff; background-color: #fff;
border-radius: 6px; border-radius: 6px;
margin: 0 10px 10px; margin: 10px;
} }
} }
} }

View File

@ -1,5 +1,5 @@
<template> <template>
<el-card shadow="always" class="host_card"> <div class="host_card">
<el-table <el-table
ref="tableRef" ref="tableRef"
:data="hosts" :data="hosts"
@ -93,7 +93,7 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-card> </div>
</template> </template>
<script setup> <script setup>
@ -194,21 +194,8 @@ const handleRemoveHost = async ({ host }) => {
<style lang="scss" scoped> <style lang="scss" scoped>
.host_card { .host_card {
margin: -10px 30px 0 30px; margin: 0px 10px;
transition: all 0.5s; // transition: all 0.5s;
position: relative;
// &:hover {
// box-shadow: 0px 0px 15px rgba(6, 30, 37, 0.5);
// }
:deep(.el-descriptions__title) {
display: none;
}
:deep(.el-descriptions) {
padding: 0 25px;
}
.no_client_data { .no_client_data {
font-size: 14px; font-size: 14px;
font-weight: normal; font-weight: normal;

View File

@ -47,8 +47,7 @@
{{ groupName }} {{ groupName }}
</div> </div>
</template> </template>
<div class="host_card_container"> <!-- <HostCard
<!-- <HostCard
v-for="(item, index) in hosts" v-for="(item, index) in hosts"
:key="index" :key="index"
:host-info="item" :host-info="item"
@ -56,13 +55,12 @@
@update-host="handleUpdateHost" @update-host="handleUpdateHost"
@update-list="handleUpdateList" @update-list="handleUpdateList"
/> --> /> -->
<HostTable <HostTable
ref="hostTableRefs" ref="hostTableRefs"
:hosts="hosts" :hosts="hosts"
@update-host="handleUpdateHost" @update-host="handleUpdateHost"
@update-list="handleUpdateList" @update-list="handleUpdateList"
/> />
</div>
</el-collapse-item> </el-collapse-item>
</el-collapse> </el-collapse>
</div> </div>
@ -255,9 +253,6 @@ let hostFormClosed = () => {
line-height: 22px; line-height: 22px;
} }
.host_card_container {
padding-top: 15px;
}
.or { .or {
color: var(--el-text-color-secondary); color: var(--el-text-color-secondary);
font-size: var(--el-font-size-base); font-size: var(--el-font-size-base);