| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <template>
- <div class="sidebar-logo-container" :class="{ 'collapse': collapse }">
- <transition name="sidebarLogoFade">
- <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
- <img v-if="logo" :src="logo" class="sidebar-logo" />
- <h1 v-else class="sidebar-title">{{ title }}</h1>
- </router-link>
- <router-link v-else key="expand" class="sidebar-logo-link" to="/">
- <img v-if="logo" :src="logo" class="sidebar-logo" />
- <h1 class="sidebar-title">{{ title }}</h1>
- </router-link>
- </transition>
- </div>
- </template>
- <script setup>
- import logo from '@/assets/logo/logo.png'
- import useSettingsStore from '@/store/modules/settings'
- import variables from '@/assets/styles/variables.module.scss'
- defineProps({
- collapse: {
- type: Boolean,
- required: true
- }
- })
- const title = import.meta.env.VITE_APP_TITLE
- const settingsStore = useSettingsStore()
- const sideTheme = computed(() => settingsStore.sideTheme)
- // 获取Logo背景色
- const getLogoBackground = computed(() => {
- if (settingsStore.isDark) {
- return 'var(--sidebar-bg)'
- }
- return sideTheme.value === 'theme-dark' ? variables.menuBg : variables.menuLightBg
- })
- // 获取Logo文字颜色
- const getLogoTextColor = computed(() => {
- if (settingsStore.isDark) {
- return 'var(--sidebar-text)'
- }
- return sideTheme.value === 'theme-dark' ? '#fff' : variables.menuLightText
- })
- </script>
- <style lang="scss" scoped>
- .sidebarLogoFade-enter-active {
- transition: opacity 1.5s;
- }
- .sidebarLogoFade-enter,
- .sidebarLogoFade-leave-to {
- opacity: 0;
- }
- .sidebar-logo-container {
- position: relative;
- width: 100%;
- height: 50px;
- line-height: 50px;
- background: v-bind(getLogoBackground);
- text-align: center;
- overflow: hidden;
- & .sidebar-logo-link {
- height: 100%;
- width: 100%;
- & .sidebar-logo {
- width: 32px;
- height: 32px;
- vertical-align: middle;
- margin-right: 12px;
- }
- & .sidebar-title {
- display: inline-block;
- margin: 0;
- color: v-bind(getLogoTextColor);
- font-weight: 600;
- line-height: 50px;
- font-size: 14px;
- font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
- vertical-align: middle;
- }
- }
- &.collapse {
- .sidebar-logo {
- margin-right: 0px;
- }
- }
- }
- </style>
|