logo.vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <script setup lang="ts">
  2. import { useNav } from "@/layout/hooks/useNav";
  3. const props = defineProps({
  4. collapse: Boolean
  5. });
  6. const { title } = useNav();
  7. </script>
  8. <template>
  9. <div class="sidebar-logo-container" :class="{ collapses: props.collapse }">
  10. <transition name="sidebarLogoFade">
  11. <router-link
  12. v-if="props.collapse"
  13. key="props.collapse"
  14. :title="title"
  15. class="sidebar-logo-link"
  16. to="/"
  17. >
  18. <img src="/logo.svg" alt="logo" />
  19. <span class="sidebar-title">{{ title }}</span>
  20. </router-link>
  21. <router-link
  22. v-else
  23. key="expand"
  24. :title="title"
  25. class="sidebar-logo-link"
  26. to="/"
  27. >
  28. <img src="/logo.svg" alt="logo" />
  29. <span class="sidebar-title">{{ title }}</span>
  30. </router-link>
  31. </transition>
  32. </div>
  33. </template>
  34. <style lang="scss" scoped>
  35. .sidebar-logo-container {
  36. position: relative;
  37. width: 100%;
  38. height: 48px;
  39. overflow: hidden;
  40. .sidebar-logo-link {
  41. display: flex;
  42. flex-wrap: nowrap;
  43. align-items: center;
  44. height: 100%;
  45. img {
  46. display: inline-block;
  47. height: 32px;
  48. }
  49. .sidebar-title {
  50. display: inline-block;
  51. height: 32px;
  52. margin: 2px 0 0 12px;
  53. overflow: hidden;
  54. font-size: 18px;
  55. font-weight: 600;
  56. line-height: 32px;
  57. color: $subMenuActiveText;
  58. text-overflow: ellipsis;
  59. white-space: nowrap;
  60. }
  61. }
  62. }
  63. </style>