index.vue 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <script lang="ts" setup>
  2. import { useLayoutMode } from "@/hooks/useLayoutMode"
  3. import logo from "@/assets/layouts/logo.png?url"
  4. // import logoText1 from "@/assets/layouts/logo-text-1.png?url"
  5. // import logoText2 from "@/assets/layouts/logo-text-2.png?url"
  6. interface Props {
  7. collapse?: boolean
  8. }
  9. const props = withDefaults(defineProps<Props>(), {
  10. collapse: true
  11. })
  12. const { isLeft, isTop } = useLayoutMode()
  13. </script>
  14. <template>
  15. <div class="layout-logo-container" :class="{ collapse: props.collapse, 'layout-mode-top': isTop }">
  16. <transition name="layout-logo-fade">
  17. <router-link v-if="props.collapse" key="collapse" to="/">
  18. <img :src="logo" class="layout-logo" />
  19. </router-link>
  20. <router-link v-else key="expand" to="/">
  21. <div class="layout-logo-text">
  22. <img class="latout_card" src="@/assets/layouts/logo.png" />
  23. <span :style="{ color: (!isLeft ? '#000' : '#fff') }">面板组件管理</span>
  24. </div>
  25. </router-link>
  26. </transition>
  27. </div>
  28. </template>
  29. <style lang="scss" scoped>
  30. .layout-logo-container {
  31. position: relative;
  32. width: 100%;
  33. height: var(--v3-header-height);
  34. line-height: var(--v3-header-height);
  35. text-align: center;
  36. overflow: hidden;
  37. .layout-logo {
  38. display: none;
  39. }
  40. .layout-logo-text {
  41. display: flex;
  42. align-items: center;
  43. height: 100%;
  44. vertical-align: middle;
  45. justify-content: center;
  46. span {
  47. margin-left: 10px;
  48. font-size: 23px;
  49. }
  50. }
  51. }
  52. .latout_card {
  53. width: 32px;
  54. height: 32px;
  55. }
  56. .layout-mode-top {
  57. height: var(--v3-navigationbar-height);
  58. line-height: var(--v3-navigationbar-height);
  59. }
  60. .collapse {
  61. .layout-logo {
  62. width: 32px;
  63. height: 32px;
  64. vertical-align: middle;
  65. display: inline-block;
  66. }
  67. .layout-logo-text {
  68. display: none;
  69. }
  70. }
  71. </style>